ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:53.89KB ,
资源ID:2705677      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2705677.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第8章习题解答.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第8章习题解答.docx

1、第8章习题解答习题 81. 简答题1)什么是算法?算法有什么特性?如何表示一个算法?2)什么是结构化程序设计?它的三种基本结构是什么?它们有什么特点?3)分支和循环语句中的条件是什么表达式表示?4)Do While型循环结构的程序构造中,对循环结构的要求是什么?5)VBA过程有哪四种?过程与函数的定义、调用有哪些不同,调用的传值与传址有哪些不同?6)什么是全局变量、私有变量、静态变量,如何使用?2. 求程序运行结果题1)试写出下列程序运行结果Public Sub Fig1() Dim i As Integer Debug.Print Tab(10); * For i = 1 To 5 Debu

2、g.Print Tab(10 - i); *; Spc(i - 1); *; Spc(i - 1); * Next i For i = 4 To 1 Step -1 Debug.Print Tab(10 - i); *; Spc(i - 1); *; Spc(i - 1); * Next i Debug.Print Tab(10); *End Sub 2)求下列程序运行结果Public Sub 作业2() Dim x, y, i As Double x = 0: y = 0 For i = 1 To 8 If i Mod 2 0 Then x = x - i Else y = y + i En

3、d If Next Debug.Print i=; i Debug.Print x=; x Debug.Print y=; yEnd Subi= 9 x=-16 y= 203)求下列程序的运行结果Public Sub 作业3() Dim m, s, k As Double m = 28 s = 0 k = 1 Do While k =3) If n = 2 Then Exit Sub End If a1 = 1 a2 = 1 Debug.Print a1; a2 For i = 2 To n - 1 a3 = a1 + a2 a1 = a2 a2 = a3 Debug.Print a3 Nex

4、tEnd Sub解:n=101 1 2 3 5 8 13 21 34 553. 改错题1)程序改错,下面的每个程序均有两个错误,试调试修改正确。(1)计算1+2+3+N的值。Public Sub Sum() Dim i, n, s, y, k As Double n = Val(InputBox(请输入n) i = 1: s = 1 s=0 Do While i n i=n s = s + i i = i + 1 Loop Debug.Print S=; sEnd Sub(2)程序的功能是计算公式Y=1-1/3!+1/5!-1/7!,式中除第1项外,其余各项可用1/(2N+1)表示。Publi

5、c Sub 作业5() Dim mm, n, p, y, k As Double mm = Val(InputBox(请输入计算公式中1后面的项目个数) n = 1: p = 1: y = 1 Do While n = mm k = 2 * n + 1 p = p * (k - 1) * k y = y + (-1) / p n = n + 1 Loop Debug.Print Y=; yEnd Sub4. 编程题1)已知试编成求Z的值,请分别使用Select Case和IfElseIfEndIf编写程序。解1:Public Sub P172_4_1if1 () Dim x,y,z As In

6、teger x = Val(InputBox(请输入一个整数给X:) y=Val(InputBox(请输入一个整数给Y) if xy and y0 then z=x/y end if msgbox(“z=”&str(z)end sub解2:Public Sub P172_4_1if2() Dim x, y, z As Integer x = Val(InputBox(请输入一个整数给X:) y = Val(InputBox(请输入一个整数给Y) If x y And y 0 Then z = x / y End If MsgBox (z= & Str(z)End Sub解3:Public Su

7、b P172_4_1Select Case () Dim x,y,z As Integer x = Val(InputBox(请输入一个整数给X:)y=Val(InputBox(请输入一个整数给Y) Select Case XY AND Y0 Case XY AND Y0 Z=X/Y END SELECT MSGBOX(“Z=”& STR(Z)END SUB 2)编写程序,求一元二次方程Ax2+Bx+C = 0的解,输入为系数A,B和C。Public Sub P172_4_2() 求方根 Dim a, b, c As Integer a = Val(InputBox(输入系数a:) b = V

8、al(InputBox(输入系数b:) c = Val(InputBox(输入系数c:) d = b 2 - 4 * a * c If d 0 Then x1 = (-b + Sqr(d) / (2 * a) x2 = (-b - Sqr(d) / (2 * a) MsgBox (x1= & Str(x1) MsgBox (x2= & Str(x2) ElseIf d = 0 Then x1 = -b / (2 * a) x2 = -b / (2 * a) MsgBox (x1= & Str(x1) MsgBox (x2= & Str(x2) Else MsgBox (x1 = x2=无解)

9、End IfEnd Sub3)用整数0-6依次表示星期日、星期一、星期六,编程实现下列功能:用键盘输入一个整数,在显示器上输出对应的中文表示星期几,如果键入的整数范围不在-1到6之内,则显示“输入数据错误”,返回要求再次键入正确数字。当键入-1时,程序终止。解1:Public Sub SelectCaseP172_4_3() Dim a As Integer a = Val(InputBox(请输入一个整数) Select Case a Case 0 MsgBox (星期日) Case 1 MsgBox (星期一) Case 2 MsgBox (星期二) Case 3 MsgBox (星期三)

10、 Case 4 MsgBox (星期四) Case 5 MsgBox (星期五) Case 6 MsgBox (星期六) Case -1 End Case Else MsgBox (输入数据错误) End SelectEnd Sub解2:Public Sub SelectCaseP172_4_3() Dim a As Integer Do While True a = Val(InputBox(请输入一个整数) Select Case a Case 0 Debug.Print MsgBox(今天是星期天, vbYesNoCancel + vbExclamation + vbDefaultBut

11、ton1, 今日提示) Case 1 Debug.Print MsgBox(今天是星期一, vbYesNoCancel + vbExclamation + vbDefaultButton1, 今日提示) Case 2 Debug.Print MsgBox(今天是星期二, vbYesNoCancel + vbExclamation + vbDefaultButton1, 今日提示) Case 3 Debug.Print MsgBox(今天是星期三, vbYesNoCancel + vbExclamation + vbDefaultButton1, 今日提示) Case 4 Debug.Print

12、 MsgBox(今天是星期四, vbYesNoCancel + vbExclamation + vbDefaultButton1, 今日提示) Case 5 Debug.Print MsgBox(今天是星期五, vbYesNoCancel + vbExclamation + vbDefaultButton1, 今日提示) Case 6 Debug.Print MsgBox(今天是星期六, vbYesNoCancel + vbExclamation + vbDefaultButton1, 今日提示) Case -1 Exit Do Case Else MsgBox (你输入的数据错误!) End

13、 Select LoopEnd Sub4)乘火车旅行的行李收费标准如下:成年人可免费携带重量20公斤的行李,未成年人可免费携带10公斤的行李,超出这个重量,火车站将加收费用,收费标准是每公斤每百公里收费为0.20元,不足百公里按百公里记。试编程按不同类型的人和行李重量来记收费用。Public Sub P172_4_4行李收费()Dim a, w, m, s, y As Integera = Val(InputBox(请输入乘客年龄)w = Val(InputBox(请输入乘客行李重量)m = Val(InputBox(请输入行驶公里数)y = Int(m / 100)If a = 18 The

14、n 成年人 If w = 20 Then 行李小于等于20公斤免费 s = 0 ElseIf (m Mod 100) = 0 Then s = 0.2 * (w - 20) * y 行李大于20公斤每公斤每百公里收费为0.20元 Else s = 0.2 * (w - 20) * (y + 1) 不足百公里按百公里记 End If End IfElse If w = 10 Then 未成年人行李小于等于10公斤免费 s = 0 else If (m Mod 100) = 0 Then s = 0.2 * (w - 10) * y 行李大于20公斤每公斤每百公里收费为0.20元 Else s =

15、 0.2 * (w - 10) * (y + 1) 不足百公里按百公里记 End If End IfEnd IfDebug.Print 应付费用: & Str(s)End Sub5)编写程序完成求和S=1+(1+2)+(1+2+3)+(1+2+10)。如果求S=1! + 2! + 3! + + 10!,试编写程序并比较其同异。方法1:Public Sub P172_4_5累加累加和() Dim x, s, t, i As Integer s = 0 t = 0 For i = 1 To 10 s = s + i t = t + s Next Debug.Print s Debug.Print

16、tEnd Sub5_2 、S=1! + 2! + 3! + + 10!,Public Sub 求阶乘和() Dim i, j, p, s As Double s = 0 For i = 1 To 10 p = 1 For j = 1 To i p = p * j 循环不变式,完成累乘。 Next j Debug.Print Str(i) & 的阶乘是: & Str(p) s = s + p Next i Debug.Print Str(i) & 的阶乘和是: & Str(s)End Sub6)编程求100到200之间即能被3整除又能被5整除的正整数的个数,并显示这些数。Public sub 整

17、除() n=0 for i=100 to 200 if i mod 3=0 and i mod 5=0 then 或 i mod 15=0 n=n+1 Debug.print i endif NextDebug.print nEnd sub 7)编程完成下列图形的打印。其中第一个*所在列为第10行,第20列。 * * * *Public Sub 三角形1()For i = 10 To 14 Debug.Print Tab(20); *; For j = 1 To 2 * (i - 9) - 2 Debug.Print *; Next jDebug.PrintNext iEnd Sub * *

18、* * *Public Sub三角形2()Dim i, j As IntegerFor i = 1 To 9 Debug.PrintNextDebug.Print Spc(19); *For i = 1 To 4 Debug.Print Spc(18 - i); *; For j = 1 To i + 1 Debug.Print *; Next Debug.PrintNextEnd Sub * * * * *Public Sub 平行四边形输出()Dim i, j As IntegerFor i = 10 To 14 Debug.Print Tab(30 - i); *; For j = 1

19、To 5 Debug.Print *; Next jDebug.PrintNext iEnd Sub8)使用数组输入十个评委的评分,要求去除最高分、最低分,求应试者的最后得分。解:Public Sub P172_4_8()Dim mark!, aver!, i%, max1!, min1!aver = 0For i = 1 To 10mark = Val(InputBox(请输入第 & i & 位评委的打分)If i = 1 Thenmax1 = mark: min1 = markElseIf mark max1 Then Maxl = markEnd IfEnd If aver = aver

20、 + markNext iaver = (aver - max1 - min1) / 8MsgBox averEnd Sub9)编程求2到100间的所有素数,并求它们的和。Public Sub 求素数个数()Dim w, n, j, s As Doubles = 0j = 0For w = 3 To 99 Step 2 For n = 2 To Int(Sqr(w) 判断W是否为素数 If w Mod n = 0 Then Exit For 能整除时说明不是素数结束内循环 End If Next If n Int(Sqr(w) Then 说明是素数 Debug.Print w s = s +

21、w 累加素数 j = j + 1 统计素数的个数 End IfNextDebug.Print S=; s, 素数的个数; jEnd Sub 10)使用循环嵌套语句编程求:在0至999的范围内,找出所有这样的数,其值等于该数中各位数字的立方和。如:153=13+53+33求0999之间水仙花数。 (水仙花数:指一个三位数,其各位数字立方之和等于该数本身。如:153=13+53+33) 算法思路:解此题的关键是要知道如何分离出一个三位数中的各位数字。本题采取将指定的数除10求余,所得余数就是数值最右边得一个数码。接着将除10后的数截尾取整,得到的就是去掉最右边一个数码后的数值,以此类推,每次都可以

22、截得一个最右边的数码,将该三位数的各位数码分别截取出来并进行立方求和,如等于原数,则原数为水仙花数;否则原数不是水仙花数。 Public Sub sxh()For N = 0 To 999 Dim A(3) I = 1 M = N Do While I = 60 And x = 60 And x max Then max = x End If If x = 200 And x 0 Then avg = sum / cnt Else avg = 0 End If Debug.Print sum=; sum Debug.Print avg=; avg Debug.Print count=; cntEnd Sub14)输入两个正整数m和n,求其最大公约数和最小公倍数。解题思路:最大公约数 采用辗转相除法可以获得, 最小公倍数 就是 x*y/最大公约数 了 . 用辗转相除法求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数; 再用第一个余数除小的一个数,得第二个余数; 又用第二个余数除第一个余数,得第三个余数; 这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2