




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序调试 (参考答案 )程序调试题的操作步骤是:(1)建立一标准EXE工程,将这一模块程序添加到工程中。如果你是通过双击标准模块程序Model1.BAS进入Visual Basic系统的,那么首先需要添加一个窗体模块。(2) 将该标准模块程序Model1.BAS中代码的指定的错误修改正确或在指定的空位填上适当的语句,并在窗体模块中编写代码(常常写在窗体的Click()事件中)调用标准模块中的Sub过程或用户自定义函数(如果在标准模块程序Model1.BAS有多个过程或函数,要注意调用的先后顺序,否那么得不到正确结果),调试运行程序,使其能输出正确结果。(3)按试题要求保存工程。如果你的计算机中
2、没有模块程序Model1.BAS,你必需先自己新建一工程,再添加一个默认标准模块,将题目所附的参考程序输入(可复制粘贴),将其中用-n-(n为1,2,3,4,5)局部删除后改为适宜的内容或将用*错误n *标示的下一语句中的错误改正,然后调试运行程序使其到达该题目的要求。1已有一模块文件Modify.Bas。该模块中的Summary过程是用于计算1!+2!+.+20!,并打印出计算结果,但不完整,请在横线上填入必要的内容,使其完整。Modify.Bas模块中的nFactor函数过程用于计算n!。程序如下:Public Function nFactor(ByVal n As Integer) As
3、 DoubleDim i As IntegerDim temp As Double temp=1For i = 1 To n temp = temp * iNext inFactor = temp End FunctionPublic Sub summary()Dim sum As DoubleDim i As IntegerDim n As Integer n = 20For i = 1 To nsum = sum + nFactor(i)Next iForm1.Print sum= & sumEnd Sub2已有一模块文件Modify.Bas。该模块中的Calculate过程是产生
4、100个0,99范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。程序如下:Public Sub calculate()Dim a(1 To 100) As IntegerDim x(1 To 10) As IntegerDim i As Integer, p As Integer产生100个0,99范围内的随机整数每行10个打印出来For i = 1 To 100 *错误1 * a(i) =int( Rnd * 100)If a(i) 10 ThenForm1.Print Space(2); a(i);ElseForm1.Print Spac
5、e(1); a(i); End IfIf i Mod 10 = 0 Then Form1.PrintNext i统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并将统计结果保存在数组x(1),x(2),.,x(10)中,将统计结果打印出来For i = 1 To 100、*p =Int(a(i)错误2mod*10) 求个位上的数字If p = 0 Then p = 10*错误3 *x(p) = x(p) + 1Next iForm1.Print 统计结果For i = 1 To 10p = iIf i = 10 Then p = 0*错误4 *Forml.Print个位数
6、为+ Str(p) + 共+ Str(x( i) +个个位数为0统计结果保存在x(10)中Next iEnd Sub3.已有一模块文件Modify.Bas。 该模块中的Findat过程是用于在一个字符串变量中查找找结果的报告:没有找到或找到的个数,但不完整,请在横线上填入必要的内容,使其完整。程序如下:Public Sub Findat()at,并用消息框给出查在字符串str1中查找Dim str1 As StringDim length As Integer Dim sum As IntegerDim i As Integerat字符串长度查到的个数str1 = InputBox(请输入一个
7、字符串)length = len(str1)i = 1sum = 0Do While i RForm1.Print 太大了,继续猜!Case ElseForm1.Print 太小了,继续猜!End Selecttimes = times + 1Loop While times 5 ThenForm1.Print 猜数失败,游戏结束!Form1.Print 正确答案为 & Str( R)End IfEnd Sub5 .已有一模块文件Modify.Bas。 该模块中的ArmstrongNumber过程是用于求出1-999之间所有的Armstrong数,并打印出来,但不完整,请在横线上填入必
8、要的内容,使其完整。所谓Armstrong数是指一个数等于它每位上数字的立方和。例如:371=3人3+7人3+1人3,那么371就是一个Armstrong数。程序如下:Public Sub ArmstrongNumber()Dim armstrong As IntegerDim i As IntegerDim hundred As Integer 百位上的数字Dim ten As Integer 十位上的数字Dim one As Integer 个位上的数字For i = 1 To 999hundred = i 100ten = (i - hundred * 100) 10one = i mo
9、d 10If i = hundred + tenA3 +oneA3ThenForm1.Print i; is ar mstrong number End IfNext iEnd Sub6 .已有一模块文件Modify.Bas。该模块中的CountTo60过程是用于从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分,要求输出取法的数量及每一种取法的一分、二分、五分的个数。程序如下:Public Sub CountTo60()从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分输出取法的数量及每一种取法的一分、二分、五分的个数Dim one As Integer 一分硬币个数Dim
10、two As Integer 二分硬币个数Dim five As Integer 五分硬币个数Const n = 20 总数20枚Dim k As Integer取法数量k = 0For one = 1 To n*错误1 *For two = 1 To n - onefive = n - one - twoIf one + two *2 + five *5 = 60 ThenForm1.Print one=; one; two=; two; five=; five End IfNext two,*错误3*,*错误4*、*错误2*、*错误3*Next oneForm1.Print k=; k E
11、nd Sub7 .已有一模块文件Modify.Bas。 该模块中的TJ过程是将一批数据中小于零的数及它们的积打印出来,但不完整,请在横线上填入必要的内容, 使其完整。Modify.Bas模块中的SCSJ过程是产生数据, 数据的取值范围为-10 10之间的随机数。程序如下:Private Const n = 10Private a(1 To n) As IntegerTJ过程是将一批数据中小于零的数及它们的积打印出来数据由SCSJ过程产生,数据的取值范围为-10 10之间的随机整数Public Sub TJ()Dim i As IntegerDim t As Single t=1For i =
12、1 To 10If a(i)0 Thent = t * a(i)End IfNext iForm1.Print T=; tEnd SubPublic Sub SCSJ()RandomizeForm1.Print 原始数据Dim i As IntegerDim j As IntegerFor i = 1 To n随机产生0或1,为0时取负,为1时取正j = Int(Rnd * 2)If j=0 Then j = -1a(i) = j * Int(Rnd * (n + 1)Form1.Print a(i);Next iForm1.PrintEnd Sub8 .已有一模块文件Modify.Bas。
13、该模块中的Money过程是用于统计一个有7个工作人员的餐厅发工资所需的100元、50元、10元、5元和1元的票面数,但不完整,请在横线上填入必要的内容,使其完整。Modify.Bas模块中的SalaryData过程是给出7个员工的工资。 (工资单位是元)程序如下:Dim salary(7) As IntegerPublic Sub Money()Dim hundred As Integer, totalhundred As Integer 100元票面数量、总数量Dim fifty As Integer, totalfifty As Integer 50元票面数量、总数量Dim ten As
14、Integer, totalten As Integer 10元票面数量、总数量Dim five As Integer, totalfive As Integer 5元票面数量、总数量Dim one As Integer, totalone As Integer 1元票面数量、总数量Dim totalsalary As Integer 工资总计Dim i As Integer, temp As Integertotalhundred = 0totalfifty = 0totalten = 0totalfive = 0totalone = 0totalsalary = 0For i = 1 To
15、 7temp = salary ( i )hundred = Int(temp / 100)temp = temp hundred * 100fifty = Int(temp / 50)temp = temp - fifty * 50I*错误4*ten = Int(temp / 10)temp = temp - ten * 10five = Int(temp / 5)temp = temp - five * 5one = temptotalhundred = totalhundred + hundred totalfifty = totalfifty + fiftytotalten = tot
16、alten + tentotalfive = totalfive + fivetotalone = totalone + onetotalsalary = totalsalary + salary ( i )Next iForm1.Print 共需100元 & Str(totalhundred) & 张Form1.Print 共需50元 & Str(totalfifty) & 张Form1.Print 共需10元 & Str(totalten) & 张Form1.Print 共需5元 & Str(totalfive) & 张For
17、m1.Print 共需1元 & Str(totalone) & 张Form1.Print 合计 & Str(totalsalary) & 元End SubPublic Sub SalaryData() salary(1) = 1398 salary(2) = 1765 salary(3) = 689 salary(4) = 1500 salary(5) = 832 salary(6) = 590salary(7) = 1200End Sub9 .已有一模块文件Modify.Bas。 该模块中的MaxLine过程用于查找一个5行4列的二维数组中行平均值最大的行,并
18、将该行所有数据调整到第一行的位置。Modify.Bas模块中的DataProduce过程用于产生原始数据;Average过程用于计算各行的平均值;PrintArray过程用于打印二维数组和行平均值。程序如下:Dim a(1 To 5, 1 To 4) As IntegerDim ave(1 To 5) As IntegerPublic Sub MaxLine()Dim i As IntegerDim j As IntegerDim temp As IntegerDim Line_no As Integer 最大平均值的行号找出最大平均值所在行Line_no = 1For i = 2 To 5I
19、f ave(Line_no) ave(i) ThenLine_no = iEnd IfNext i交换第一行与最大平均值所在行For j = 1 To 4 temp = a(1, j)a(1, j)= a (Line_no, j)a (Line_no, j) = temp Next j交换对应行的平均值temp = ave(1)ave(1) = ave(Line_no)ave(Line_no) = temp,*错误1 *、*错误2*,*错误3*打印交换后的数据Form1.Print 交换后的数据和平均值PrintArrayEnd SubPublic Sub DataProduce()Dim i
20、 As IntegerDim j As Integer产生5*4数组For i = 1 To 5For j = 1 To 4a(i, j) = Int(100 * Rnd)Next jNext iEnd SubPublic Sub Average() Dim i As Integer Dim j As Integer Dim sum As Integer 计算各行平均值For i = 1 To 5sum = 0For j = 1 To 4 sum = sum + a(i, j)Next jave(i) = sum / 4Next i将数组和平均值打印出来Form1.Print 原始数据和平均值
21、PrintArrayEnd SubPublic Sub PrintArray()Dim i As IntegerDim j As IntegerFor i = 1 To 5For j = 1 To 4Form1.Print a(i, j); Spc(3);Next jForm1.Print 平均值=; ave(i)Next iEnd Sub10已有一模块文件Modify.Bas。该模块中的Wrap过程用于判断一个字符串是否“回文 。 所谓 “回文 是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮。程序如下:Public Sub Wrap()Dim length As IntegerDim
22、 str1 As StringDim strleft As StringDim strright As StringDim k As Integerstr1 = InputBox(请输入任意的字符串) 输入任意字符串,如 “潮起潮落,落潮起潮*错误1*length = len(str1)k = 1Do*错误2*strleft = mid(str1, k,1 ) 从左边起逐个取出一个字符*错误3*、*错误4* 4 *strright = mid (strl, length +1 k ,1)从右边起逐个取出一个字符If strleft strright ThenExit DoEnd IfLoop
23、While k length / 2 ThenForm1.Print str1 & 是回文ElseForm1.Print str1 & 不是回文End IfEnd Sub11 .已有一模块文件Modify.Bas。 该模块中的BubbleSort过程是冒泡排序法;GenerateData过程产生10个1,20之间互不相同的随机整数;Swap过程交换两个变量的数值。程序如下:Private Const n = 10Private a(1 To n) As IntegerBubbleSort过程是冒泡排序Swap过程交换两个变量数值GenerateData过程产生10个1,20之间
24、互不相同的随机整数Public Sub BubbleSort()Dim i As Integer, j As Integer i = 1DoFor j = i + 1 To n If a(j) a(i) Then * 1 *Swap a(j), a(i) End IfNext j i = i + 1 * 2 *Loop While i n Form1.Print 排序结果For i = 1 To nForm1.Print a(i);Next iEnd SubPublic Sub GenerateData()Dim i As IntegerDim j As IntegerDim b As Boo
25、leanFor i = 1 To nb = FalseDo While Not ba(i) = Int(20 * Rnd + 1) b = True * 3 *Forj = 1 To i 1If a(i) = a(j) Then b = False Exit ForEnd IfNext jLoopForm1.Print a(i)Next iEnd Sub,*错误4*去掉括号,或改为call Swap (a(j), a(i)Public Sub Swap(a As Integer, b As Integer)Dim temp As Integertemp = aa = bb = tempEnd
26、Sub去掉ByVal,数组不能以ByVal传递12.已有一模块文件Modify.Bas。该模块中的函数过程用于将一个十六进制符号Transfer过程用于将一个十六进制整数转换为十进制整数;number程序如下:Public Sub Transfer()Dim Hex As String 十六进制数Dim Dec As Double 十进制数Dim temp As StringDim i As IntegerDim n As IntegerHex = InputBox(输入一个十六进制整数)*错误1 *n = len(Hex)i = 0Do,*错误2*temp = Mid(Hex, n - i
27、, 1)、*错误3*Dec = Dec + number (temp)*16Aii = i + 1Loop While i a(j) ThenSwap a(i),a(j)End IfNext jForm1.Print a(i)Next iForm1.print a(i) 或a(10)即最后一个End SubPublic Sub Swap(a As Integer, b As Integer)Dim temp As Integertemp = aa = bb = tempEnd Sub14.已有一模块文件Modify.Bas。该模块中的PrintArray过程是用于打印一个线上元素均为1,其余均
28、为2。要求打印的数字方阵两列数字之间空3格,两行之间空一行。程序如下:Public Sub PrintArray()下面程序用于打印5行5列的数字方阵使两对角线上元素均为1,其余均为2要求打印的数字方阵两列数字之间空3格,两行之间空一行只要修改标出出错位置的下面那一条语句Dim a(5, 5) As IntegerDim i As Integer, j As Integer5行5列的数字方阵,并使两For j = 1 To 5*错误1 *If i j and i 6 - j Then a(i,j) = 2Elsea(i, j) = 1End If*错误2*Form1.Print a(i,j)
29、Next jSpace(3);数字与空字符串不能相加、*错误3 *Form1.Print : Form1.PrintNext iEnd Sub15.已有一模块文件Modify.Bas。 该模块中的Combination过程是用于计算在合值,计算公式为Cmn=m!/(n!*(m-n)!)。Modify.Bas模块中的nFactor函数过程用于计算n!。m个数据中取出n个数据的排列组Public Sub Combination()Dim m As Integer Dimn As Integer Dim CmnAs Long Dom = Val(InputBox(请输入一个整数m)n = Val(I
30、nputBox(请输入一个整数n(n=m)*错误1 *Loop While m =nI*错误2*Public Function nFactor(ByVal n As Integer) As DoubleDim i As IntegerDim temp As Doubletemp = 1For i = 1 To ntemp = temp * iNext iEnd Sub16.已有一模块文件Modify.Bas。 该模块中的FindMax过程是用于查找一批数据中的最大数,并打印出最大数的值及最大数在数组中的下标值,但不完整,请在横线上填入必要的内容,使其完整。Modify.Bas模块中的Gener
31、ateData过程用于产生30个1-500之间的随机整数并5个一行打印出来。程序如下:Dim a(30) As IntegerPublic Sub FindMax()Dim Position As Integer 最大数在数组中的下标Dim max As Integer最大数Dim i As IntegerGenerateDatamax = a(1)Position = 1For i = 2 To 30If a(i) max Then max = a(i) Position = iEnd IfNext iForm1.Print 最大值= & Str(max)Form1.Print 最大
32、值的下标= & Str(Position)End SubPublic Sub GenerateData()Dim i As IntegerFor i = 1 To 30a(i) = Int(500 * Rnd() + 1)Form1.Print a(i),If i Mod 5 = 0 Then Form1.PrintNext iEnd Sub17.已有一模块文件Modify.Bas。该模块中的Prime过程是求出100到200之间所有的素数,并打印出来,但不完整,请在横线上填入必要的内容,使其完整。程序如下:Public Sub prime()打印出100到200之间所有的素数,并统计素数的个数Dim i As IntegerDim j As IntegerDim k As IntegerDim t As Integer 统计素数的个数Dim b As BooleanFor i = 100 To 200b = Truek=2j = Int(Sqr(i)Do While k = j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Ta3N5光阳极微结构调控:策略、机制与光电化学水分解性能优化
- 消防老师讲课件
- 2025年工业互联网平台数据清洗算法在工业生产智能化升级中的应用对比报告
- 工程类培训课件网站
- 小学心理健康课下载
- 汽车综合性能检测项目可行性研究报告建议书
- 网络安全项目验收报告模板
- 2025年中国毛纱线行业现状调研暨发展趋势研究报告
- 2025年高档绗缝床垫行业深度研究分析报告
- 教小学生比喻句课件
- 护理组长经验分享
- 2023年6月福建省普通高中学业水平合格性考试物理含答案
- 焦虑与恐惧障碍患者的护理
- 女性领导的培养和使用
- 船闸工程施工课件
- 口腔器械包装培训课件模板
- 绩效管理的协同与协调机制
- 城市轨道交通工程技术专业调研报告
- 江苏开放大学《数字电子技术基础》终结性考试复习题库(附答案)
- 高速公路的巡查与维护机制
- 犯罪心理学笔记
评论
0/150
提交评论