先看一个小程序
OptionExplicit
Dim a(1To 10) As Integer
Dim i AsInteger, j As Integer, temp As Integer
Dim flag
'随机产生10个1到100之间的数
PrivateSub Command1_Click()
'产生并显示第一个数
a(1) =Int(Rnd * 100)
Printa(1)
'标志为0时,说明不重复
flag = 0
'产生第2到第9个数
For i = 2To 10
temp = Int(Rnd * 100)
'判断新产生的数是否与前i-1个数重复
For j = 1 To i - 1
If a(j) = temp Then
'标志为1说明重复,退出循环
flag = 1
Exit For
Else
a(i) = temp
End If
Next j
Print a(i)
Next i
End Sub
产生多个不重复的随机数,首先需要有产生数的大致思路,然后进行判断得出不重复的多个数。这个程序关键之处是“不重复”,判断所产生的数是否重复是很严密的逻辑问题,任何一个语句写错位置都不能得出正确的结果。先写出大致过程,然后慢慢调试,比如你会遇到这样的问题,exit
for位置不对,如果写在next j
后面将会使判断过程不起作用;如果print a(i)写在第二层循环里面,那么将会打印多个该数。
把这个程序稍微变换一下
如题:
产生k个m到n之间不重复的随机数
OptionExplicit
Dim a()As Integer
Dim i AsInteger, j As Integer
Dim m AsInteger, n As Integer, k As Integer, temp As Integer
Dim flag
PrivateSub Command1_Click()
k = InputBox("请输入k的值")
m = InputBox("请输入m的值")
n = InputBox("请输入n的值")
ReDim a(k) As Integer
a(1) = m + Int((n - m) * Rnd)
Print a(1)
flag = 0
For i = 2 To k
temp = m + Int((n - m) * Rnd)
For j = 1 To i - 1
If a(j) = temp Then
flag = 1
Exit For
Else
a(i) = temp
End If
Next j
Print a(i)
Next i
End Sub
其实只是形式变了一下,核心还是不变的,只是最初我也没有反应过来,原来计算机如此智能。需要注意的一点是这里涉及到可变数组的知识,我把ReDim
a(k) As Integer写在了第一句,也就是产生k之前,结果下标越界。。。还是好好复习一下吧。
分享到:
相关推荐
C语言实验三程序总结逻辑运算和选择结构程序设计.pdf
微信小程序之逻辑层
论文《逻辑与归纳逻辑程序设计》
时序逻辑程序设计与软件工程
Accp7.0教师课件,使用Java理解程序逻辑教学。
计算机程序的思维逻辑(Java 描述) 计算机程序的思维逻辑(Java 描述)
C程序设计 逻辑结构程序设计 实验报告。大学c言语程序设计实验报告,逻辑程序结构设计。
健康类小程序运作逻辑与用户影响——以“丁香医生”为例.pdf
使用Java理解程序逻辑 ppt 适用于初学者
使用JAVA理解程序逻辑课后习题
程序逻辑模式——PLMPPT课件.pptx
这个是北大青鸟 Accp6.0_S1.使用Java理解程序逻辑与参考答案。是初学JAVA者所用,有所有答案和提供给学生的材料,以及每个章节的题目、答案和PPT。非常好的东东,便于各位仁兄参考。
【目的与要求】 1.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”); 2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。 4. 结合程序掌握一些简单的算法。 5. 学习调试程序 ...
预科 学习编程之前对于编程逻辑的理解 全名叫什么:使用java理解程序逻辑 一些PPT 老师上课用的
lg液晶电视lc420wun-sca1逻辑板程序。
使用java理解程序逻辑总结
这个是北大青鸟 Accp6.0_S1...使用Java理解程序逻辑与参考答案。是初学JAVA者所用,有所有答案和提供给学生的材料,以及1~17章每个章节的题目、答案和PPT。最后还有1~17综合的测试题。非常好的东东,便于各位仁兄参考。
练习你的逻辑能力,可以让你的思想有所提高.自己想出来最好..想不出来再看答案..
程序逻辑与C语言:第4章 选择结构程序设计.ppt