VB程序设计习题及答案第7章过程.doc

上传人:wux****ua 文档编号:8937469 上传时间:2020-04-02 格式:DOC 页数:11 大小:147KB
返回 下载 相关 举报
VB程序设计习题及答案第7章过程.doc_第1页
第1页 / 共11页
VB程序设计习题及答案第7章过程.doc_第2页
第2页 / 共11页
VB程序设计习题及答案第7章过程.doc_第3页
第3页 / 共11页
点击查看更多>>
资源描述
第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、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-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) Print 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 + 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 Sub 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,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 = 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 (0x) f(x)= int(6x2-5x+1) (0x3) e3-x (3x) 调用该Function过程计算f(f(f(a)+f(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(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(InputBox(输入职工编号:) 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$, 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 编写程序,把任意一个十进制数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(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 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_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程序运行结果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 A A * * * * * * * * * O O O O O O O O O【参考答案】程序代码设计Private Sub Form_Click() a$ = A Call prnt(a$) a$ = * Call prnt(a$) a$ = O Call prnt(a$)End SubSub prnt(a$) For i = 1 To 5 Print Tab(15 - i); For j = 1 To 2 * i - 1 Print a$; Next j Print Next i图7-12程序运行结果End Sub程序运行结果如图7-12所示.
展开阅读全文
相关资源
相关搜索

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


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

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


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