第六章 数组 编程及上机调试
按照下列各题的要求进行编程练习。各题的程序文件名分别为ex0601(第1题)~ex0607(第7题),保存在学号姓名用户文件夹中。
1. 某同学编写了如下程序,通过随机函数生成10个正整数,存放在数组中,然后查找这10个数中的最小数及其位置(即下标)。
Private Sub Comnmand1_Click()
Dim a(10) As Integer, min As Integer, pos As Integer Randomize For i = 1 To 10
a(i) = Int(Rnd * 90 + 10) Print a(i); Next i Print min = a(1) pos = 0
For k = 2 To 10
If a(k) < min Then min = a(k) End If pos = k Next k
Print \最小数:\位置:\End Sub
运行程序后发现,大多数情况下,程序显示的最小数位置是错的,程序需要修改。请从下面修改方案中选择一个或多个正确选项,并上机验证修改后的程序。
A. 把 min = a(1) 改为 min = 0 B. 把pos = 0 改为pos = 1
C. 把 If a(k)
第1组:3,4,2,1,5,7,8,11,13 第2组:10,6,12,9,13,8,8,1,16
设计一个程序,使用Array函数将上述两组数分别读入两个一维数组a和b中,然后将这两个数组中对应的元素相加,其结果放人第三个数组c中(c也是一维数组),最后输出数组c 中的数据。
3. 输入一个正整数n,再定义一个有n个元素的一维数组,生成n个-50~50范围内的随机整数,保存到数组中,然后将数组两端的元素对调,即将第1个元素与第n个元素对调,将第2个元素与第n-1个元素对调??,分别输出对调前、后的数组元素。
4. 编写程序,用数组建立一个8×8的矩阵,数组元素值是10?99范围内的随机整数,求解下列问题并输出结果:
(1)求所有元素之和; (2)求各行元素之和;
(3)求主对角线元素之和; (4)求所有靠边元素之和。
5.设计程序,随机产生64个100?999范围内的整数,存放在8X8数组中,然后找出该数组中最大值的元素(若有多个最大值元素,只需找出其中一个),并输出其值及行号和列号(行号和列号都从1算起)。
6.在窗体WinForm1中建立1个单选按钮组Opt1和1个命令按钮Cmd1,单选按钮组包含3个单选按钮,其标题分别为“单选1”、“单选2”和“单选3”,下标分别为0,1和2。初始状态下,“单选2”单选按钮被选中,以后每次单击命令按钮时,依次选中1个单选按钮。
7. 产生20个互不相同的10?99随机整数,完成下列程序。
【提示】设数组为a(),要实现数组元素互不相同,每当生成一个新数时,用此数与前面每一个元素,即a(1)?a(k)比较,若与前面的元素不同(标记f值为0),则将该数作为数组元素a(k+1);若与前面的元素相同(标记f值为1),则将该数丢弃。然后再生成一个新数,再进行比较,照此进行下去。
Private Sob Form_Load()
Dim a(20) As Integer Randomize a(1) = Int(10 + 90 * Rnd) '产生第一个随机数 k=1 'k録随机数的个数 Do While k<20
x = Int(10 + 90 * Rnd) ’产生一个随机数 f = 0 ‘f标记是否存在相同数,0表示未找到相同数 For j=1 To k ‘从a(1)?a(k)中判定数值x是否已经存在 If x=a(j) Then
_____(1)_____ Exit For End If Next j
If f = 0 Then ‘若不存在相同数,则保存 k= _____(2)_____ _____(3)_____ End If Loop Show
For j =1 To 20 ’输出结果 Print a(j) Next) End Sub