• 沒有找到結果。

Visual Basic程序设计实验指导与习题(第2版) - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "Visual Basic程序设计实验指导与习题(第2版) - 万水书苑-出版资源网"

Copied!
13
0
0

加載中.... (立即查看全文)

全文

(1)第 5 章 循环结构、列表框和组合框 实验 5.1. 5 种循环结构的使用. 一、实验目的 1.掌握 For…Next 循环语句的语法格式及其使用方法。 2.掌握 Do…Loop 等 4 种循环语句的语法格式及其使用方法。 3.掌握循环结构的设计方法。 二、实验内容 1.求 s=1+2+3+…+100。 2.编写程序代码,求 1+2+3+…+60。 3.编写程序代码,求 2+4+6+…+100。 1 1 1 1 4.求 s  1       ,n 是从键盘输入的正整数。 2 3 4 n 1 1 5.求 s  1     ,n 是从键盘输入的正整数。 2! n!  1 1 1 6.用级数  1     ,求 π 的近似值,当最后一项的绝对值小于 10-5 时,停止 4 3 5 7 计算。 7.输入两个正整数,求它们的最大公约数。 三、实验步骤 1.求 s=1+2+3+…+100。 分析:使用 For 循环时设置循环控制变量 i,其初值为 1,终值为 100。 Private Sub Form_Click() Dim s As Integer,i As Integer s=0 For i=1 To 100 s=s+i Next i Print "1+2+3+…+100=";s End Sub. 2.编写程序代码,求 1+2+3+…+60。程序代码如下,并把横线处的代码补充完整。 分析:注意本程序使用 Exit For。 Private Sub Form_Click() Dim s As Integer,i As Integer.

(2) 第 5 章 循环结构、列表框和组合框 s=0 For i=1 To 100 _________ Then Exit For End If s=s+i Next i Print "1+2+3+…+_________=";s End Sub. 3.编写程序代码,求 2+4+6+…+100。程序代码如下,并把横线处的代码补充完整。 分析:注意本程序循环控制变量 i 的步长。 Private Sub Form_Click() Dim s As Integer,i As Integer s=0 For i=_________ s=s+i Next i Print "2+4+6+…+100=";s End Sub. 1 1 1 1      ,n 是从键盘输入的正整数。 2 3 4 n 分析:这里 t 是循环控制变量,其初值应在 Do While 语句前给出,每次在循环体中加 1, s 是求到的和,其初值应为 0。 界面设计:其中包含两个标签、一个文本框和一个命令按钮,如图 5-1 所示。. 4.求 s  1 . 图 5-1. 输出界面. 对“计算”按钮编写单击事件代码如下: Private Sub Command1_Click() Dim s As Single, n As Integer, t As Integer s=0 n = Val(Text1.Text) t=1 Do While t <= n s=s+1/t t=t+1 Loop Label2.Caption = "s=1/1+1/2+...+1/" & Str(n) & "=" & Str(s) End Sub. 47.

(3) 48. Visual Basic 程序设计实验指导与习题(第 2 版). 5.求 s  1 . 1 1    ,n 是从键盘输入的正整数。程序代码如下,并把横线处的代码补 2! n!. 充完整。 分析:这里注意变量 a,它的作用是求到 t!,即当 t=1 时,求到 1! ,当 t=2 时,求到 2!,…… 界面设计:同第 4 题。 对“计算”按钮编写单击事件代码如下: Private Sub Command1_Click() Dim s As Single, n As Integer, t As Integer, a As Long s=0 n = Val(Text1.Text) t=1 a=1 Do _________ s = s +_________ t=t+1 Loop While _________ Label2.Caption = "s=1/1!+1/2!+...+1/" & Str(n) & "!=" & Str(s) End Sub.  1 1 1  1     ,求 π 的近似值,当最后一项的绝对值小于 10-5 时,停止 4 3 5 7 计算。程序代码如下,并把横线处的代码补充完整。. 6.用级数. Private Sub Form_Load() Dim s As Single, t As Long, m As Integer s=0 t=1 m=1 Do Until_________ s=s+m/t _________ t=t+2 Loop Print "π="; _________ End Sub. 7.输入两个正整数,求它们的最大公约数。运行界面如图 5-2 所示。. 图 5-2. 程序运行界面.

(4) 第 5 章 循环结构、列表框和组合框. 分析:求 m、n 的最大公约数可以用“辗转相除法” ,具体方法如下: (1)以较大的数 m 作为被除数,以较小的数 n 作为除数,相除后余数为 r。 (2)若 r≠0,则 m←n,n←r,继续相除得到新的余数 r。若 r≠0,则重复此过程,直到 r=0 为止。 (3)最后的 n 就是最大公约数。 界面设计:程序中用到了两个文本框、一个命令按钮和四个标签,它们的属性如表 5-1 所示。 表 5-1 主要界面对象的属性设置值 对象 Form. 属性. 属性值. Caption. 最大公约数. (名称). TopicLabel. Label1 Caption (名称) Label 2 Caption (名称) Label 3 Caption (名称) Label 4. 请输入两个正整数 MLabel m: NLabel n: ResultLabel. Caption (名称) Text1. MText. Text (名称) Text 2. NText. Text (名称) Command Caption. ComputeCmd 计算. 单击“计算”按钮后,计算输入两个正整数的最大公约数并输出结果到标签 ResultLabel 中,编写单击事件代码如下: Private Sub ComputeCmd_Click() Dim m As Integer, n As Integer, r As Integer m = Val(Text1.Text) n = Val(Text2.Text) If n <= 0 Or m <= 0 Then MsgBox "数据错误" Exit Sub End If If m < n Then r=m m=n n=r End If Do. 49.

(5) 50. Visual Basic 程序设计实验指导与习题(第 2 版) r = m Mod n m=n n=r Loop Until r = 0 ResultLabel.Caption = "最大公约数为:" & Str(m) End Sub. 四、习题 1.随机产生 10 个 100~200 的数,求最大值。程序代码如下,并把横线处的代码补充 完整。 Private Sub Form_Load() Show Randomize Max = 100 i=1 do while i<=10 (1). '产生随机数. Print x; Space(3); (2) Then Max = x End If (3) Loop Print Print "最大值="; Max End Sub. 2.输出 Fibonacci 数列中的前 40 个数据,Fibonacci 数列的形成规律是:f1=1,f2=1,从 第 3 项开始,每项均为前两项之和,即: Fn=Fn-1+Fn-2 (n>2) 程序代码如下,并把横线处的代码补充完整。 Private Sub command1_click() f1 = 1 f2 = 1 For i = 1 To 20 Print f1; Space(10); (1) '求 f1 与 f2 后面的一项 (2) 'f1 与 f2 发生变化,数据向后推移 (3) If i Mod 2 = 0 Then Print End If Next i End Sub. 3. s  1 . 1 1 1 1      (1) n 1 ,求 s 的值,直到最后一项的绝对值小于 10-6。 2 3 4 n.

(6) 第 5 章 循环结构、列表框和组合框. 1 1 1 1 4. s  1       ,求前 20 项的和 s。 3 5 7 2n  1. 5.从键盘输入正整数 n,求 s=2+4+6+…+m,m 是小于等于 n 的最大整数。 6.s=1!+2!+3!+…+n!,利用 Inputbox 函数任意输入 n 值,求对应的 s 值。 1 2 n 1 7. s      ,当 n=10 时,求 s。 2! 3! n! 8. s . 1 1 1   ,求 s,直到最后一项的值小于 10-5。 3! 3 4! 4 n! n. 9.设计程序,求 s=1*(1+2)*(1+2+3)*…*(1+2+3+…+n)的值,编程求 n=20 时的 s 值。 1! 2! n! 10.输入一个 n 值,计算 s     的值并打印。 1 2 2  3 n 1 n 2 3 5 8 13 11.设有分数序列 , , , , , ,求出这个数列的前 20 项之和。 1 2 3 5 8. 12.利用 ex 的下述近似公式计算 e2(直到最后一项小于 10-5 为止)。 ex  1 . x x2 x3 xn    1! 2! 3! n!. 五、重点难点分析 1.使用 For 循环时,注意步长的控制。 2.在习题 1 中要产生随机数。产生随机数可使用 Rnd 函数(Rnd 函数产生 0~1 之间的 随机数),Rnd 通常与 Int 函数配合使用。例如 Int(5*Rnd+1)可以产生 1~5 范围内的随机整数。 当反复运行一个程序时,同一序列的随机数会重复出现。为了避免这种情况的发生,在调用 Rnd 函数之前,先使用 Randomize 语句来初始化随机数生成器。. 实验 5.2. 循环嵌套及列表框和组合框. 一、实验目的 1.掌握循环嵌套的使用。 2.掌握循环嵌套结构的设计方法。 3.熟练掌握列表框与组合框控件的属性、事件和方法。 二、实验内容 1.设计一个程序,输出如图 5-3 所示。 2.在第 1 题的基础上,如果要打印的图形如图 5-4 所示,如何修改? 3.在第 2 题的基础上,如果要打印的“*”不是每一行都相等,图形如图 5-5 所示,如何 修改? 4.“水仙花数”是一个 3 位数,其各位数的立方和等于该数,例如:371=33+73+13。 5.对于第 4 题,我们是通过三层循环嵌套的方法来解决的,如果用一层循环来解决它, 如何实现?. 51.

(7) 52. Visual Basic 程序设计实验指导与习题(第 2 版). 图 5-3. 输出的图形(1). 图 5-4. 输出的图形(2). 图 5-5. 输出的图形(3). 6.设 n 是一个四位数,它的 9 倍恰好是其反序数,求 n 的值。例如:123 的序数是 321。 7.编写程序,输出用 1 元人民币兑换成 1 分、2 分和 5 分硬币的不同兑换方法,每种硬 币至少一枚。 8.百钱买百鸡问题。已知一只公鸡五元,一只母鸡三元,三只小鸡一元。现有 100 元钱 欲买一百只鸡,求公鸡、母鸡和小鸡能各买多少? 9.有 25 元钱,由 1 元、2 元和 5 元组成,共有 10 张,问有多少种不同的组合方法?每 种至少一张。 10.设计一个程序,找出 300~700 之间既能被 3 整除又能被 5 整除的所有整数,并将它 们添加到列表框中。 11.有一些队员准备参加接力比赛,编定程序当单击“添加”按钮时从组合框中准备参加 比赛的队员中选择一个添加到列表框中,或将组合框中新输入的一名队员添加到列表框中,表.

(8) 第 5 章 循环结构、列表框和组合框. 明由此人参加接力比赛,当单击“删除”按钮时从列表框中删去一名队员。 12.在第 11 题中,没有考虑队员的重复添加和参赛队员个数不能超过四人,即一名队员 可能被添加两次或两次以上,以及队员个数超过四人,不允许继续添加。请在第 11 题基础上 完善此程序。 三、实验步骤 1.设计一个程序,输出如图 5-3 所示。 分析:要打印这样的图形,应使用双循环。内循环控制每一行打印多少个“*”,外循环 控制一共打印多少行。 Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To 5 Print "*"; Next j Print Next i End Sub. 2.在第 1 题的基础上,如果要打印的图形如图 5-4 所示,如何修改?程序代码如下,并 把横线处的代码补充完整。 分析:在每行打印“*****”前应打印若干个空格或把要输出位置向右移,所以可以使用 Spc 函数或 Tab 函数来实现。 Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 5 _________ For j = 1 To 5 Print "*"; Next j Print Next i End Sub. 3.在第 2 题的基础上,如果要打印的“*”不是每一行都相等,图形如图 5-5 所示,如何 修改?程序代码如下,并把横线处的代码补充完整。 分析:打印的字符个数不同,内循环的次数也不同。因此,内循环的次数应与外循环的 大小有关。 Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 5 Print Tab(10 - i); For _________ Print "*"; Next j Print. 53.

(9) 54. Visual Basic 程序设计实验指导与习题(第 2 版) Next i End Sub. 4.“水仙花数”是一个 3 位数,其各位数的立方和等于该数,例如:371=33+73+13。 分析:因为“水仙花数”是一个 3 位数,所以可以用三重循环来解决这一问题,即用最 外一层循环表示百位,用第二层循环表示十位,用内层循环表示个位,并且满足条件 371=33+73+13 就打印这个数。 Private Sub Form_Click() Dim i As Integer, j As Integer, k As Integer, p As Integer Print "水仙花数" For i = 1 To 9 For j = 0 To 9 For k = 0 To 9 p = i * 100 + j * 10 + k If p = i * i * i + j * j * j + k * k * k Then Print p End If Next k Next j Next i End Sub. 5.对于第 4 题,我们采用的是通过三层循环嵌套的方法来解决的,如果用一层循环来解 决它,如何实现?程序代码如下,并把横线处的代码补充完整。 分析:这里可以采用把任意 3 位数的每一位数分离出来的方法来解决这个问题。 Private Sub Form_Click() Dim i As Integer, j As Integer, k As Integer, p As Integer, n As Integer Print "水仙花数" For p = 100 To 999 i = int(p/100) _________ k=p-i*100-j*10 _________ If p =n Then Print p End If Next p End Sub. 6.设 n 是一个四位数,它的 9 倍恰好是其反序数,求 n 的值。例如:123 的反序数是 321。 程序代码如下,并把横线处的代码补充完整。 Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer, d As Integer, p As Integer, n As Integer, t As Integer For p = 1000 To 2000 _________ b = Int((p - a * 1000) / 100) _________ _________ n = a + b * 10 + c * 100 + d * 1000.

(10) 第 5 章 循环结构、列表框和组合框 _________ If t = n Then Print p End If Next p End Sub. 7.编写程序,输出将 1 元人民币兑换成 1 分、2 分和 5 分硬币的不同兑换方法,每种硬 币至少一枚。 分析:因为有三种硬币,所以可以用三重循环来解决这一问题,即用最外一层循环表示 5 分硬币,用第二层循环表示 2 分硬币,用内层循环表示 1 分硬币。 界面设计:运行程序如图 5-6 所示。 Private Sub Form_Load() Show Print "5 分"; Spc(10); "2 分"; Spc(10); "1 分" For i = 1 To 19 For j = 1 To 47 For k = 1 To 94 t=i*5+j*2+k If t = 100 Then Print i; Spc(10); j; Spc(10); k End If Next k Next j Next i End Sub. 图 5-6. 程序运行界面. 8.百钱买百鸡问题。已知一只公鸡五元,一只母鸡三元,三只小鸡一元。现有 100 元钱 欲买一百只鸡,求公鸡、母鸡和小鸡能各买多少?程序代码如下,并把横线处的代码补充完整。 Private Sub Form_Load() Show Print "公鸡"; Spc(10); "母鸡"; Spc(10); "小鸡" For i = 1 To 19 For j = 1 To 32 _________ t=i*5+j*3+k\3. 55.

(11) 56. Visual Basic 程序设计实验指导与习题(第 2 版) If _________ And k Mod 3 = 0 Then Print i; Spc(10); j; Spc(10); k End If Next j Next i End Sub. 9.有 25 元钱,由 1 元、2 元和 5 元组成,共有 10 张,问有多少种不同的组合方法?每 种至少一张。程序代码如下,并把横线处的代码补充完整。 Private Sub Form_Load() Show Print "5 元"; Spc(10); "2 元"; Spc(10); "1 元" For i = 1 To 4 For j = 1 To 9 _________ t=i*5+j*2+k _________ Then Print i; Spc(10); j; Spc(10); k End If Next j Next i End Sub. 10.设计一个程序,找出 300~700 之间既能被 3 整除又能被 5 整除的所有整数,并将它 们添加到列表框中。 分析:要求 300~700 之间满足条件的整数,所以可以使用单循环。在循环中用 If 语句来 求到既能被 3 整除又能被 5 整除的所有数,再用 AddItem 方法将满足条件的数添加到列表框 List1 中。 界面设计:窗体上有一个标签、一个列表框和一个命令按钮,运行界面如图 5-7 所示。. 图 5-7. 程序运行界面. 单击“计算”按钮后,在 300~700 之间既能被 3 整除又能被 5 整除的所有整数显示在列 表框 List1 中,编写单击事件代码如下: Private Sub Command1_Click() Dim i As Integer List1.Clear For i = 300 To 700 If i Mod 3 = 0 And i Mod 5 = 0 Then.

(12) 第 5 章 循环结构、列表框和组合框 List1.AddItem i End If Next i End Sub. 11.有一些队员准备参加接力比赛,编定程序当单击“添加”按钮时从组合框中准备参加 比赛的队员中选择一个添加到列表框中,或将组合框中新输入的一名队员添加到列表框中,表 明由此人参加接力比赛,当单击“删除”按钮时从列表框中删去一名队员。 界面设计:窗体上有一个列表框、两个标签、一个组合框和二个命令按钮。运行界面如 图 5-8 所示。这里我们突出了组合框兼有文本框和列表框两者功能的特点,用户既可以从列表 框中选择所需的项目,又可以直接键入文本。. 图 5-8. 程序运行界面. 窗体加载时,清空列表框,对组合框进行初始化工作。代码如下: Private Sub Form_Load() List1.Clear Combo1.AddItem "张冬" Combo1.AddItem "王红" Combo1.AddItem "刘贝贝" Combo1.AddItem "李阳" Combo1.AddItem "张雪" Combo1.AddItem "陈萍" Combo1.Text = "" End Sub. 单击“添加”按钮后,将组合框中当前被选中的队员添加到列表框 List1 中,或将组合框 中新输入的一名队员添加到列表框 List1 中,代码如下: Private Sub Command1_Click() List1.AddItem Combo1.Text, 0 End Sub. 单击“删除”按钮后,将列表框 List1 中当前选中的队员删去,代码如下: Private Sub Command2_Click() List1.RemoveItem List1.ListIndex End Sub. 12.在第 11 题中,没有考虑队员的重复添加和参赛队员个数不能超过四人,即一名队员 可能被添加两次或两次以上,以及队员个数超过四人时,不允许继续添加。请在第 11 题基础 上完善此程序。. 57.

(13) 58. Visual Basic 程序设计实验指导与习题(第 2 版). 四、习题 1.设 s=11*22*33*…*nn,求 s 不大于 400000 时的最大 n 值。 2.求 1000~1100 之间的所有素数,并在列表框中显示出来。 3.用 1,2,3,4 这四个数字组成四位数。编写程序,打印出所有可能的四位数(四个 数字可以相同),并统计所组成的四位数的个数。 4.利用循环语句在窗体中显示不同字号大小。 5.输入初始值,输出从初始值开始的 100 个不能被 3 整除的数。 6.取 1 元、2 元、5 元的硬币共 10 枚,付给 25 元钱,问共有多少种不同的取法。 7.编写程序,输出结果如图 5-9 所示。 8.有 30 个人在一家餐馆用餐,其中有男人、女人和小孩。每个男人花了 3 元钱,每个 女人花了 2 元钱,每个小孩花了 1 元钱,一共花去 50 元,问男人、女人以及小孩各有几个人? 写程序求解这个问题,并将结果添加到列表框中。 9.编写程序,产生 20 个 0~99 之间的随机整数显示在左侧的列表框 1 中,单击“偶数” 按钮将列表框 1 中的所有偶数添加到右侧的列表框 2 中,单击“奇数”按钮将列表框 1 中的所 有奇数添加到右侧的列表框 2 中。 10.编写程序求出所有 1000~9999 之间的幸运数显示在列表框中,单击“计算”按钮将 幸运数的个数显示在文本框中。所谓幸运数是前两位数字之和等于后两位数字之和的四位数。 其运行界面如图 5-10 所示。. 图 5-9. 输出结果. 图 5-10. 运行结果. 五、重点难点分析 1.应用多重循环来设计程序时,应注意循环体执行的次数。 2.在打印各种图形时,应注意空格符和换行符的控制。 3.在使用列表框时,应先使用 List1.Clear 来清空列表框再进行输出。.

(14)

參考文獻

相關文件

Use the design in part (a) to cover the floor board completely, how many trapezium tiles are needed at least.

各块报告模板包括所谓的模板对象, 或对象, 每个被分配到某一 SpecManager 项目(光谱, 表格, 化学结构...) 或其它项目(文本标签)

學生已在 2000 年版小學數學課程學習單位 4N4「倍數和因數」中認識因

2-1 化學實驗操作程序的認識 探究能力-問題解決 計劃與執行 2-2 化學實驗數據的解釋 探究能力-問題解決 分析與發現 2-3 化學實驗結果的推論與分析

也就是設定好間隔時間(time slice)。所有的 程序放在新進先出的佇列裡面,首先CPU

除調整段落 內 的行距之 外 , 也可以 調整段落前 與段落後的 行距..

俄國的學者從 1957 年開始研究整理這些文獻,直到八十年代公布 於世的有五十件,之後整理出 488 件,然後拼合成 375 個序號,到

為紀念其雙親終生默默行善,設置此助學金,幫助家境 清寒學生順利完成學業。89 學年度至 91 學年度,每學 年捐資 18 萬元。92 學年度至 95 學年度,每學年捐資 10