求问vb的两道题:关于数组和列表框的

来源:百度知道 编辑:UC知道 时间:2024/07/04 03:47:09
鄙人计算机课学vb,可总是不怎么会。现有两道题目求解,是数组排列和列表框的。谢谢大虾相助!
1、假定学生的成绩在数组XS_CJ(1 to 10)中,对应的姓名在数组XS_XM(1 To 10)中,单击按钮“排序”时,能按分数从高到低的排列,即排序后XS_CJ(1)和XS_XM(1)为第一名的成绩、姓名。
2、在列表框中生成某包含有两位随机整数的6行5列的矩阵,单击“转置”按钮对该矩阵进行转置,结果显示于另一个列表框中。
题目分析:矩阵的转置就是将矩阵的行和列交换。定义两个二维数组A(6,5)和B(5,6),用二重循环和随机函数产生二维数组A(6,5)的各元素。
地一题的题目分析:本实验是完成一个对数组元素从大到小的排序。可以采用冒泡法完成排序,在此使用选择排序法。
假设对A(N)数组中的数据从大到小排序,选择排序步骤如下:
(1)将第一个数与第2个到第10个数依次比较,如果A(1)<A(J)(J=2,3,…,10),则交换A(1)和A(J);
(2)将第2个数与第3个到第10个依次比较,如果A(2)<A(J)(J=3,…,10),则交换A(2)和A(J);
(3)重复以上方法,将第I个数与第I+1个数到第10个数依次比较,如果A(I)<A(J)(J=3,…,10),则交换A(I)和A(J);
共重复N-1轮。
在本实验中,每次对成绩的比较中,需要交换的不仅XS_CJ数组中的元素,而且对应的XS_XM数组中对应的元素也要进行交换。
设计界面用列表框LstOldMark和LstNewMark分别来显示排序前后学生的姓名和成绩。

1:
dim n as integer
dim a() as integer,b() as string
private sub cmd1_click() '输入数据记录
n=Val(inputbox("总共需输入多少个学生?"))
Redim a(n) :Redimb(n)
for i=1 to n
a(i)=val(inputbox("成绩"))
b(i)=inputbox("姓名")
next i
End Sub
private sub cmd2_click() '排序
for i=1 to n
for j=i to n
if a(i)>a(j) then
t=a(j)
a(j)=a(i)
a(i)=t
end if
next j
next i
for i=1 to n
list1.additem str(a(i))
list2.additem b(i)
next i
End Sub