大学VB实1答案 (2)
- 格式:doc
- 大小:88.00 KB
- 文档页数:5
上海立信会计学院本科实验报告
班级:
学号: 姓名: 指导教师:
系部: 专业: 实验时间:
实验4 循环结构
一、 实验目的
1. 掌握For语句的使用
2. 掌握Do语句的各种形式的使用。
3. 掌握如何控制循环条件,防止死循环或不循环。
二、实验要求
1. 在C:\下建立子文件夹“VB实验4”,按照题目要求,在该文件夹下为各题保存相应的文件,如本实验中的第一题,需保存的文件有:工程文件(41.vbp)、窗体文件(41.frm) 及可执行文件(41.exe),本实验中的第二题,需保存的文件有:工程文件(42.vbp)、窗体文件(42.frm) 及可执行文件(42.exe),其余实验依此类推。
2. 撰写实验过程中出现了哪些问题、错误,你是如何解决的,做一个小结。
三、 实验内容:
1. 编一程序利用单循环结构显示如图4-1所示的界面。要求:循环体内显示的内容用String函数来实现,找出循环控制变量与String函数内字符个数的关系:即String(2*i-1,Trim(Str(i)))。窗体显示字体默认、大小为小四,通过单击窗体触发程序运行。
图4-1
Private Sub Form_Click()
For i = 1 To 9
Print Tab(15 - i); String(2 * i - 1, Trim(Str(i)))
Next i
End Sub
2. 计算的近似值,的计算公式为: )12()12()2(75653431222222nnn,要求:单击按钮同时显示当n=10、100、1000时的结果,利用Format函数保留5位小数。窗体中所有控件字体默认、大小为小四。效果如图4-2所示。
图4-2
Private Sub Command1_Click()
pi = 2
For i = 1 To 10
pi = pi * (2 * i) ^ 2 / ((2 * i - 1) * (2 * i + 1))
Next i
Print " n=10 ∏近似值="; Format(pi, "0.00000")
pi = 2
For i = 1 To 100
pi = pi * (2 * i) ^ 2 / ((2 * i - 1) * (2 * i + 1))
Next i
Print " n=100 ∏近似值="; Format(pi, "0.00000")
pi = 2
For i = 1 To 1000
pi = pi * (2 * i) ^ 2 / ((2 * i - 1) * (2 * i + 1))
Next i
Print " n=1000 ∏近似值="; Format(pi, "0.00000")
End Sub
3. 求Sn=a+aa+aaa+aaaa+…+aa…aaa(n个a),其中a是一个由随机数产生的1~9(包括1、9)中的一个正整数,n是一个由随机数产生的4~9(包括4、9)中的一个正整数,产生随机数需使用Randomize语句。例如,当a=2,n=5时,Sn=2+22+222+2222+22222。要求:单击窗体时,在窗体上逐个显示S的结果,效果如图4-3所示。所有控件字体默认、大小为小四,窗体宽度设置为9000Twip。
图4-3
Private Sub Form_Click()
Randomize
a = Int(Rnd * 9 + 1)
n = Int(Rnd * 6 + 4)
Print "絞a="; Trim(Str(a)); "时,n="; Trim(Str(n)); "时, S=";
For i = 1 To n - 1
Print String(i, Trim(Str(a))) + "+";
Next i
Print String(n, Trim(Str(a)))
End Sub
4. 编一程序,要求在程序启动时显示出所有的水仙花数。所谓水仙花数是指100~999之间的一个3位正整数,其各位数字立方和等于该数字本身。例如153是水仙花数,因为153=13+53+33。窗体中字体默认、大小为小四。效果如图4-4所示。
图4-4
Private Sub Form_Load()
Dim x%, x1%, x2%, x3%
Show
Print Tab(2); "正整数 100-999所有水仙花数为: "
For x = 100 To 999
x1 = x \ 100
x2 = (x Mod 100) \ 10
x3 = x - x1 * 100 - x2 * 10
If x = x1 ^ 3 + x2 ^ 3 + x3 ^ 3 Then
Print Tab(2); x1 & "^3" & " + " & x2 & "^3" & " + " & x3 & "^3" & " = "; x1 ^ 3 & " + " & x2 ^ 3 & " + " & x3 ^ 3 & " ="; x
End If
Next x
End Sub
5. 一个富翁试图与陌生人做一笔换钱生意,换钱规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);而富翁第一天给陌生人1分钱,第二天2分,第三天4分,……,富翁每天给陌生人的钱是前一天的两倍,直到满一个月。编一程序,计算第几天富翁付出钱的总数超过陌生人付出钱的总数,并显示第30天时他们分别付给对方的金额总数以及富翁将多付出的金额数?要求:程序运行时立即显示结果,窗体中字体默认、大小为小四,效果如图4-5所示。
图4-5
Private Sub Form_Load()
Dim mf&, m#, i%, fm#
Show
mf = 0: fm = 0: m = 0.005: i = 0
Do While fm <= mf
mf = mf + 100000
m = m * 2
fm = fm + m
i = i + 1
Loop
Print " 第"; i; "天 富翁的付钱总数超过陌生人的付钱总数"
Print " 富翁付给陌生人钱的总数为:"; Format(fm, "0.00"); "元"
Print " 陌生人付给富翁钱的总数为:"; Format(mf, "0.00"); "元"
mf = 0: fm = 0: m = 0.005
For i = 1 To 30
mf = mf + 100000 m = m * 2
fm = fm + m
Next i
Print " 第 30 天"
Print " 富翁付给陌生人钱的总数为:"; Format(fm, "0.00"); "元"
Print " 陌生人付给富翁钱的总数为:"; Format(mf, "0.00"); "元"
Print " 富翁将多付出:"; Format(fm - mf, "0.00"); "元"
End Sub
四、 实验过程中的问题、错误,解决方法,总结、体会、建议。