VB程序设计习题及答案第6章数组.doc

上传人:wux****ua 文档编号:8800218 上传时间:2020-04-01 格式:DOC 页数:13 大小:179KB
返回 下载 相关 举报
VB程序设计习题及答案第6章数组.doc_第1页
第1页 / 共13页
VB程序设计习题及答案第6章数组.doc_第2页
第2页 / 共13页
VB程序设计习题及答案第6章数组.doc_第3页
第3页 / 共13页
点击查看更多>>
资源描述
第6章 数 组61 试将下面的算术乘法九九表存入数组中,并在窗口显示出来。1 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 183 6 9 12 15 18 21 24 274 8 12 16 20 24 28 32 365 10 15 20 25 30 35 40 456 12 18 24 30 36 42 48 547 14 21 28 35 42 49 56 638 16 24 32 40 48 56 64 729 18 27 36 45 54 63 72 81【参考答案】程序代码设计Private Sub Form_Click() Dim a(9, 9) As Integer For i = 1 To 9 For j = 1 To 9 a(i, j) = i * j Next j Next i For i = 1 To 9 For j = 1 To 9 Print Format(a(i, j), ); Next j Print Next iEnd Sub图6-1程序运行结果程序运行结果如图6-1所示:62 编写程序,输出上题乘法九九表对角线上的数。(两条对角线的数分两组输出)。【参考答案】程序代码设计Private Sub Form_Click() Dim a(9, 9) As Integer For i = 1 To 9 For j = 1 To 9 a(i, j) = i * j Next j Next i For i = 1 To 9 For j = 1 To 9 If i = j Then Print Tab(5 * j); a(i, j) Next j Next i For i = 1 To 9 For j = 1 To 9 If i + j = 10 Then Print Tab(5 * j); a(i, j) Next j Next i图6-2程序运行结果End Sub程序运行结果如图6-2所示:63 编写程序,输出上题乘法九九表中任意一列和任意一行上的数。【参考答案】程序代码设计Private Sub Form_Click() Dim a(9, 9) As Integer For i = 1 To 9 For j = 1 To 9 a(i, j) = i * j Next j Next i n = Val(InputBox(输入行号:) m = Val(InputBox(输入列号:) For i = 1 To 9 Print Tab(5 * i); a(n, i); Next i Print For j = 1 To 9 Print Tab(5 * m); a(m, j) Next jEnd Sub运行结果:如输入行号为:5,输入列号为:5图6-3程序运行结果则程序运行结果如图6-3所示:64 编写程序,交换上题乘法九九表中任意两列上对应的数。【参考答案】程序代码设计Private Sub Form_Click() Dim a(9, 9) As Integer For i = 1 To 9 For j = 1 To 9 a(i, j) = i * j Next j Next i n = Val(InputBox(输入要交换的第一个列号:) m = Val(InputBox(输入要交换的第二个列号:) For i = 1 To 9 For j = 1 To 9 If j = n Then Print Tab(5 * j); a(i, m); ElseIf j = m Then Print Tab(5 * j); a(i, n); Else Print Tab(5 * j); a(i, j); End If Next j Print Next iEnd Sub运行结果:图6-4程序运行结果如将第1列与第5列交换,则程序运行结果如图6-4所示:65 编写程序,交换上题乘法九九表中任意两行上对应的数。【参考答案】程序代码设计Private Sub Form_Click() Dim a(9, 9) As Integer For i = 1 To 9 For j = 1 To 9 a(i, j) = i * j Next j Next i n = Val(InputBox(输入要交换的第一个行号:) m = Val(InputBox(输入要交换的第二个行号:) For i = 1 To 9 For j = 1 To 9 If i = n Then Print Tab(5 * j); a(m, j); ElseIf i = m Then Print Tab(5 * j); a(n, j); Else Print Tab(5 * j); a(i, j); End If Next j Print Next iEnd Sub运行结果:如将第1行与第5行交换,则程序运行结果如图6-5所示:图6-5程序运行结果66 矩阵转置,即将矩阵的行、列互换,如下所示: 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9 【参考答案】程序代码设计Private Sub Form_Click() Dim a(3, 3) As Integer, b(3, 3) As Integer For i = 1 To 3 For j = 1 To 3 a(i, j) = Val(InputBox(输入a数组:) Next j Next i For i = 1 To 3 For j = 1 To 3 b(j, i) = a(i, j) Next j Next i Print 输出a数组: For i = 1 To 3 For j = 1 To 3 Print Tab(5 * j); a(i, j); Next j Print Next i Print 输出b数组: For i = 1 To 3 For j = 1 To 3 Print Tab(5 * j); b(i, j); Next j Print Next iEnd Sub图6-6程序运行结果程序运行结果如图6-6所示:67 利用一维数组,统计一个班学生成绩059,6069,7079,8089,9099和100各分数段的人数。 【参考答案】程序代码设计Private Sub Form_Click() Dim a(5 To 10) As Integer For i = 1 To 30 s = Val(InputBox(输入一个学生的成绩:) If s = 60 And s 0.5 Then Print Z; z = z + 1 Else Print F; f = f + 1 End If If (z + f) Mod 40 = 0 Then Print i = Int(2 * Rnd) j = Int(2 * Rnd) c(i, j) = c(i, j) + 1 Next k Print Print 统计结果 Print 正面落地的次数为:; z, 概率为:; z / n Print 反面落地的次数为:; f, 概率为:; f / n Print 两个正面落地的次数为:, c(1, 1) Print 两个反面落地的次数为:, c(0, 0) Print 一正一反落地的次数为:, c(0, 1) + c(1, 0)End Sub程序运行结果如图6-8所示:图6-8程序运行结果69 利用随机函数,分别产生两个5行4列的矩阵,实现矩阵减法运算。图6-9程序运行结果【参考答案】程序代码设计Private Sub Form_Click() Randomize Timer Dim a(1 To 5, 1 To 4) As Integer, b(1 To 5, 1 To 4) As Integer For i = 1 To 5 For j = 1 To 4 a(i, j) = Int(Rnd * 9 + 1) b(i, j) = Int(Rnd * 9 + 1) Next j Next i Print A矩阵为: For i = 1 To 5 For j = 1 To 4 Print a(i, j); Next j Print Next iPrint B矩阵为: For i = 1 To 5 For j = 1 To 4 Print b(i, j); Next j Print Next i Print A矩阵-B矩阵结果为: For i = 1 To 5 For j = 1 To 4 Print a(i, j) - b(i, j); Next j Print Next iEnd Sub程序运行结果如图6-9所示。610 有学生成绩表如下所示: 姓名 数学 物理 化学 英语 张 三 85 87 93 95 李 四 91 90 93 75 王 五 83 77 63 85 赵 六 75 80 73 74 孙 七 72 79 86 65 试编写程序,将上述成绩输入数组,并对学生成绩进行检索。只要键入一个学生姓名,就可以显示出他的成绩。要求:(1) 使用动态数组,输入的人数可以根据情况决定。(2) 当要检索的学生名不在成绩表中时,要能给出提示信息。(3) 每次检索后,询问是否继续检索,并能根据输入信息决定是否结束程序运行。【参考答案】程序代码设计Dim nam() As String, a1() As Integer, a2() As IntegerDim a3() As Integer, a4() As IntegerPrivate Sub Form_Click() n = Val(InputBox(输入学生人数:) ReDim nam(n), a1(n), a2(n), a3(n), a4(n) For i = 1 To n nam(i) = InputBox(输入学生姓名:) a1(i) = Val(InputBox(输入数学成绩:) a2(i) = Val(InputBox(输入物理成绩:) a3(i) = Val(InputBox(输入化学成绩:) a4(i) = Val(InputBox(输入英语成绩:) Next i Print 姓名 数学 物理 化学 英语 Do na$ = InputBox(输入要查询学生的姓名:) For i = 1 To n If na$ = nam(i) Then Print nam(i); ; Tab(12); a1(i); ; a2(i); ; a3(i); ; a4(i) Exit For End If Next i If i n Then Print na$; 查无此人! con$ = InputBox(是否继续查询?(Y/N) Loop While con$ = Y Or con$ = yEnd Sub运行结果:图6-10程序运行结果按题意输入查询成绩的学生姓名,如输入的学生姓名在成绩表中,则显示;如输入的学生姓名不在成绩表中,则显示“查无此人!”,程序运行结果如图6-10所示:611 某大学召开运动会,有16个学生参加100米短跑,成绩表如下:运动员号 成绩(秒) 运动员号 成绩(秒)023 12.5 075 12.1 102 12.7 062 12.9 091 13.2 021 13.7 078 13.5 018 11.1 162 12.8 107 13.8 032 13.3 017 13.9 045 11.9 056 13.4 图6-11程序运行结果038 11.8 123 12.3 试编写程序,将上述成绩输入数组,并按学生成绩排出名次, 输出前5名运动员的名次, 运动员号和成绩。【参考答案】程序代码设计Private Sub Form_Click() Dim no(1 To 16) As String, a(1 To 16) As Single For i = 1 To 16 no(i) = InputBox(输入第 & i & 个运动员编号:) a(i) = Val(InputBox(输入第 & i & 个运动员成绩:) Next iFor i = 1 To 15 l = i For j = i + 1 To 16 If a(l) a(j) Then l = j Next j If i l Then t = no(i) no(i) = no(l) no(l) = t t = a(i) a(i) = a(l) a(l) = t End If Next i Print 名次 运动员编号 运动员成绩 For i = 1 To 16 Print i, no(i), a(i) Next iEnd Sub程序运行结果如图6-11所示。612 输入5个学生的学号,姓名和4门课的成绩,计算每个学生的总分和平均分,并按平均成绩从高到低输出学生的成绩单。(要求:不使用自定义数据类型)【参考答案】程序代码设计Private Sub Form_Click() Dim no(5) As Long, nam(5) As String, a(5, 4) As Single Dim sum(5) As Single, aver(5) As Single For i = 1 To 5 no(i) = Val(InputBox(输入第 & i & 个学生的学号:) nam(i) = InputBox(输入第 & i & 个学生的姓名:) For j = 1 To 4 a(i, j) = Val(InputBox(输入第 & i & 个学生第 & j & 门课成绩:) Next j Next i For i = 1 To 5 sum(i) = 0 For j = 1 To 4 sum(i) = sum(i) + a(i, j) Next j aver(i) = CInt(sum(i) / 4) Next i For i = 1 To 4 For j = i + 1 To 5 If aver(i) aver(j) Then t = no(i) no(i) = no(j) no(j) = t t = nam(i) nam(i) = nam(j) nam(j) = t t = sum(i) sum(i) = sum(j) sum(j) = t t = aver(i) aver(i) = aver(j) aver(j) = t For k = 1 To 4 t = a(i, k) a(i, k) = a(j, k) a(j, k) = t Next k End If Next j Next i Print 学号 姓名 a1 a2 a3 a4 总分 平均分 For i = 1 To 5 Print no(i); ; nam(i); ; Tab(20); For j = 1 To 4 Print a(i, j); ; Next j Print sum(i); ; aver(i) Next iEnd Sub图6-12程序运行结果程序运行结果如图6-12所示。613 打印如下所示杨辉三角形11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1【参考答案】程序代码设计Dim a() As IntegerPrivate Sub Form_Click() n = Val(InputBox(输入n值:) ReDim a(n, n) As Integer For i = 1 To n a(i, 1) = 1 a(i, i) = 1 Next i For i = 2 To n For j = 2 To i a(i, j) = a(i - 1, j - 1) + a(i - 1, j) Next j Next i Print 输出扬辉三角形: For i = 1 To n For j = 1 To i Print Format(a(i, j), ); Next j Print Next iEnd Sub程序运行结果如图6-13所示:图6-13程序运行结果
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!