求教 班级排座位的程序
答案:1 悬赏:40 手机版
解决时间 2021-03-25 10:15
- 提问者网友:锁深秋
- 2021-03-25 06:16
求教 班级排座位的程序
最佳答案
- 五星知识达人网友:封刀令
- 2021-03-25 07:44
算法的实现思路:
1,把N个文本框,组织成控件数组:Text1(0)、Text1(1)、Text1(2)、...Text1(N-1)。
2,建立一个由N个元素的正整数数组d(N)。
3,用产生随机数的方法,生成一N个范围在【1,N】的互相不重复的自然数序列,一一存放到数组d里。
4,最后通过1-N的循环,按照次序把d(N)里的数值作为列表框里的项的编号,取出姓名,赋值给文本框。
即:Text1(i).Text = List1.List(d(i))
一,使用文本框组
在窗体上先添加一个文本框控件Text1,然后用鼠标选中该文本框,右键单击,选[复制];然后选窗体任何位置,右键单击,选[粘贴],回答“Yes”,这样复制得到的就是控件数组了,这样不然粘贴,到符合你的个数要求位置。
二,关键代码实现:
1,生成N个范围在[1,N]内且互不相同的自然数序列:
Dim d() As Integer
Dim i As Integer
Dim n As Integer
Dim x As Integer
n = 40 '假设一个班级40个学生
ReDim d(n) As Integer
Randomize
n = 0
Do While n < 40
x = Int(Rnd * 40 + 1)
For i = 1 To n
If x = d(i) Then Exit For
Next i
If i > n Then
n = n + 1
d(n) = x
End If
Loop
'下面的代码以一行输出5个数字,可以检验一下是否符合要求
For i = 1 To 40
Print d(i),
if i mod 5 then print
Next i
2,下面实现把列表框里的40个学生的名单,一一填写到文本框里;
注意:列表框里的每行叫做一个项,而编号从0开始,即:
第一行,叫做第一项,编号却是 0,也叫做第0项
第二行,叫做第二项,编号却是 1,也叫做第1项,......等等
同时注意到,文本框控件组的下标,默然也是从0开始编号的!!!
而生成的自然数序列是1-40,所以需要减1处理。
for i=1 to 40
Text1(i-1).Text = List1.List(d(i)-1)
next i
至此,结束了。追问不对啊!
哪里有问题吗?
追答有什么问题呢?
其实我给出的代码,只要修改那个40就可以了?
你现在上面是26,下面出现25了??????追问现在好了!!!!如果是要名单的前5个人随机排到第二三排,其他人随机怎么写呢
1,把N个文本框,组织成控件数组:Text1(0)、Text1(1)、Text1(2)、...Text1(N-1)。
2,建立一个由N个元素的正整数数组d(N)。
3,用产生随机数的方法,生成一N个范围在【1,N】的互相不重复的自然数序列,一一存放到数组d里。
4,最后通过1-N的循环,按照次序把d(N)里的数值作为列表框里的项的编号,取出姓名,赋值给文本框。
即:Text1(i).Text = List1.List(d(i))
一,使用文本框组
在窗体上先添加一个文本框控件Text1,然后用鼠标选中该文本框,右键单击,选[复制];然后选窗体任何位置,右键单击,选[粘贴],回答“Yes”,这样复制得到的就是控件数组了,这样不然粘贴,到符合你的个数要求位置。
二,关键代码实现:
1,生成N个范围在[1,N]内且互不相同的自然数序列:
Dim d() As Integer
Dim i As Integer
Dim n As Integer
Dim x As Integer
n = 40 '假设一个班级40个学生
ReDim d(n) As Integer
Randomize
n = 0
Do While n < 40
x = Int(Rnd * 40 + 1)
For i = 1 To n
If x = d(i) Then Exit For
Next i
If i > n Then
n = n + 1
d(n) = x
End If
Loop
'下面的代码以一行输出5个数字,可以检验一下是否符合要求
For i = 1 To 40
Print d(i),
if i mod 5 then print
Next i
2,下面实现把列表框里的40个学生的名单,一一填写到文本框里;
注意:列表框里的每行叫做一个项,而编号从0开始,即:
第一行,叫做第一项,编号却是 0,也叫做第0项
第二行,叫做第二项,编号却是 1,也叫做第1项,......等等
同时注意到,文本框控件组的下标,默然也是从0开始编号的!!!
而生成的自然数序列是1-40,所以需要减1处理。
for i=1 to 40
Text1(i-1).Text = List1.List(d(i)-1)
next i
至此,结束了。追问不对啊!
哪里有问题吗?
追答有什么问题呢?
其实我给出的代码,只要修改那个40就可以了?
你现在上面是26,下面出现25了??????追问现在好了!!!!如果是要名单的前5个人随机排到第二三排,其他人随机怎么写呢
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯