VB程序设计 习题及答案第7章 过程_第1页
VB程序设计 习题及答案第7章 过程_第2页
VB程序设计 习题及答案第7章 过程_第3页
VB程序设计 习题及答案第7章 过程_第4页
VB程序设计 习题及答案第7章 过程_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 过 程71 编写程序,利用Sub过程计算下式的值:s=a!+b!+c!a,b,c的值由键盘输入【参考答案】程序代码设计Private Sub Form_Click() Dim s As Integer, n As Integer For i = 1 To 3 n = InputBox(n=) Call fact(n, f) s = s + f Next i Print s=; sEnd SubPrivate Sub fact(n, f) f = 1 For i = 1 To n f = f * i Next i图7-1程序运行结果End Sub运行结果:如a、b、c的值分别输入为4、5

2、、6则程序运行结果如图7-1所示:72 编写程序,打印100200之间的所有素数。要求:(1) 每行输出5个素数。(2) 利用Function过程判断每个数是否为素数,是返回1,否则返回0。【参考答案】程序代码设计Private Sub Form_Click() Print 2; k = 1 For i = 3 To 100 f = prime(i) If f = 1 Then k = k + 1 If k Mod 5 = 0 Then Print i Else Print i; End If Next iEnd SubPrivate Function prime(n) prime = 1图7

3、-2程序运行结果 For i = 2 To n - 1 If n Mod i = 0 Then prime = 0: Exit For Next iEnd Function程序运行结果如图7-2所示:73 编写程序,利用Function过程计算下式的值: (1+2+3+m)+(1+2+3+n) y = (1+2+3+p) 【参考答案】程序代码设计Private Sub Form_Click() m = Val(InputBox(输入m:) n = Val(InputBox(输入n:) p = Val(InputBox(输入p:) y = (sum(m) + sum(n) / sum(p) Pr

4、int sum=; yEnd SubPrivate Function sum(n) s = 0 For i = 1 To n s = s + i Next i sum = sEnd Function运行结果:如输入m值为:20,n值为:15,p值为:10图7-3程序运行结果则程序运行结果如图7-3所示:74 编写Function过程计算n!,调用该函数过程计算下式的值:S=1+1/(1+4!)+1/(1+4!+7!)+1/(1+4!+19!)【参考答案】程序代码设计Private Sub Form_Click() s = 0 t = 0 For i = 1 To 19 Step 3 t = t

5、 + fact(i) s = s + 1 / t Next i Print s=; sEnd SubPrivate Function fact(n) f = 1 For i = 1 To n f = f * i Next i fact = fEnd Function图7-4程序运行结果程序运行结果如图7-4所示。 x x2 x3 xn 7-5计算 ex = 1 + + + + + 1! 2! 3! n! xn 设x=1,2,3,4,5,6 时,分别打印ex 的值,要求精度 0.0001 n! 用Function过程计算n!,调用该过程,计算上式的值。【参考答案】程序代码设计Private Su

6、b Form_Click() For x = 1 To 6 Sum = 1 t = 1 n = 0 Do n = n + 1 t = t * x term = t / fact(n) Sum = Sum + term Loop Until term 0.0001 Print e; x; =; Sum Next xEnd SubPrivate Function fact(n) f = 1 For i = 1 To n f = f * i Next i fact = fEnd Function程序运行结果如图7-5所示:图7-5程序运行结果76编写两个Function过程,分别计算40,16,34

7、,26,52的最大公约数和最小公倍数。【参考答案】程序代码设计Private Sub Form_Click() Dim a(1 To 5) As Integer a(1) = 40 a(2) = 16 a(3) = 34 a(4) = 26 a(5) = 52 a1 = a(1) a2 = a(2) b = gcd(a1, a2) d = b c = a(1) * a(2) / b For i = 3 To 5 a1 = c a2 = a(i) b = gcd(a1, a2) c = c * a(i) / b Next i Print 最小公倍数为:; c For i = 3 To 5 d =

8、 gcd(d, a(i) Next i Print 最大公约数为:; dEnd SubPrivate Function gcd(x, y) If x y Then t = x x = y y = t End If r = x Mod y Do While r 0 x = y y = r r = x Mod y Loop gcd = yEnd Function图7-6程序运行结果程序运行结果如图7-6所示:77利用Function过程计算下式的值: cos2x (0 x) f(x)= int(6x2-5x+1) (0 x3) e3-x (3x) 调用该Function过程计算f(f(f(a)+f

9、(f(2+f(b)的值。a,b的值由键盘输入。【参考答案】程序代码设计Private Sub Form_Click() a = Val(InputBox(输入a的值:) b = Val(InputBox(输入b的值:) t = f(f(f(a) + f(f(2 + f(b) Print 计算结果:; tEnd Sub图7-7程序运行结果Private Function f(x) If x 0 Then f = Cos(2 * x) ElseIf x Max Then Max = x(i, j) m = j End If Next jEnd Sub图7-8程序运行结果Private Sub ld

10、(x() As Integer, j, n) Max = x(1, j) n = 1 For i = 2 To 5 If x(i, j) Max Then Max = x(i, j) n = i End If Next iEnd Sub程序运行结果如图7-8所示:79 编写程序,要求该程序在输入某人的编号、实发工资数额后,自动确定发给多少张一百元、五十元、十元、五元、一元、五角、一角、五分、一分的钞票,并输出实发工资总额和所需各种钞票的总数目。(要求用Sub过程处理除一百元以外的钞票的数目)【参考答案】程序代码设计Private Sub Form_Click() num = Val(Input

11、Box(输入职工编号:) s$ = InputBox(输入职工工资:) l = Len(s$) s0 = Val(Left$(s$, l - 5) Call fenp(l, s$, s1, s2, s3, s4, s5, s6, s7, s8) Print 职工编号:; num, 职工工资:; s$ Print 100元; s0 Print 50元; s1 Print 10元; s2 Print 5元; s3 Print 1元; s4 Print 5角; s5 Print 1角; s6 Print 5分; s7 Print 1分; s8End Sub Private Sub fenp(l, s

12、$, s1, s2, s3, s4, s5, s6, s7, s8) l1 = Val(Mid$(s$, l - 4, 1) l2 = Val(Mid$(s$, l - 3, 1) l3 = Val(Mid$(s$, l - 1, 1) l4 = Val(Mid$(s$, l, 1) s1 = l1 5 s2 = l1 Mod 5 s3 = l2 5 s4 = l2 Mod 5 s5 = l3 5 s6 = l3 Mod 5 s7 = l4 5 s8 = l4 Mod 5End Sub程序运行结果如图7-9所示:(注意:输入的工资保留到分)图7-9程序运行结果710 编写程序,把任意一个十进制

13、数N转换成分别用二进制、八进制和十六进制表示的数,要求用Sub过程实现数制的转换。【参考答案】程序代码设计Private Sub Form_Click() Dim b(30) As Integer Do Print 1-10进制转换为2进制 Print 2-10进制转换为8进制 Print 3-10进制转换为16进制 Print 4-退出 n = Val(InputBox(请选择1,2,3,或4:) Select Case n Case 1, 2, 3 a = Val(InputBox(请输入一个10进制整数:) m = Val(InputBox(请输入要转换的进制:) Call zhuanh

14、(a, b(), m) Case 4 Exit Do End Select LoopEnd Sub Private Sub zhuanh(a, b() As Integer, m) aa = a k = 1 Do Until a = 0 r = a Mod m b(k) = r k = k + 1 a = a m Loop k = k - 1 Print (; aa; )10=(; For i = k To 1 Step -1 If b(i) = 10 Then Print a; ; ElseIf b(i) = 11 Then Print b; ; ElseIf b(i) = 12 Then

15、Print c; ; ElseIf b(i) = 13 Then Print d; ; ElseIf b(i) = 14 Then Print e; ; ElseIf b(i) = 15 Then Print f; ; Else Print b(i); End If Next i Print ); mEnd Sub图7-10程序运行结果程序运行结果如图7-10所示:711 编写Sub过程,用于计算n个学生m门课的平均成绩,并按平均成绩的优劣,打印学生的名次、学号和平均成绩。(要求:学生的学号,每门课的成绩以及成绩单的打印由主程序完成。)【参考答案】程序代码设计Private Sub Form_

16、Click() Dim no(5) As Long, a(5, 4) As Integer Dim s(5) As Integer, aver(5) As Integer For i = 1 To 5 no(i) = InputBox(no:) For j = 1 To 4 a(i, j) = InputBox(score:) Next j Next i Call sort(no(), a(), s(), aver(), 5, 4) Print 名次 学号 平均成绩 For i = 1 To 5 Print i; ; no(i); ; aver(i) Next iEnd Sub图7-11程序运

17、行结果Sub sort(no&(), a%(), s%(), aver%(), n%, m%) For i = 1 To n s(i) = 0 For j = 1 To m s(i) = s(i) + a(i, j) Next j aver(i) = s(i) / m Next i For i = 1 To n - 1 For j = i + 1 To n If aver(i) aver(j) Then t = aver(i) aver(i) = aver(j) aver(j) = t k = no(i) no(i) = no(j) no(j) = k End If Next j Next iEnd Sub程序运行结果如图7-11所示:712 用Sub过程输出由字符组成的三角形图形,通过三次调用该过程,输出下列三种图形: A * O A A A * * * O O O A A A A A * * * * * O O O O O A A A A A A A * * * * * * * O O O O O O O A A A A A A A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论