二程序调试参考答案概要_第1页
二程序调试参考答案概要_第2页
二程序调试参考答案概要_第3页
二程序调试参考答案概要_第4页
二程序调试参考答案概要_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

〔二〕程序调试(参考答案)程序调试题的操作步骤是:〔1〕建立一标准EXE工程,将这一模块程序添加到工程中。如果你是通过双击标准模块程序进入VisualBasic系统的,那么首先需要添加一个窗体模块。〔2〕将该标准模块程序中代码的指定的错误修改正确或在指定的空位填上适当的语句,并在窗体模块中编写代码〔常常写在窗体的Click()事件中〕调用标准模块中的Sub过程或用户自定义函数〔如果在标准模块程序有多个过程或函数,要注意调用的先后顺序,否那么得不到正确结果〕,调试运行程序,使其能输出正确结果。〔3〕按试题要求保存工程。如果你的计算机中没有模块程序,你必需先自己新建一工程,再添加一个默认标准模块,将题目所附的参考程序输入〔可复制粘贴〕,将其中用---n---〔n为1,2,3,4,5〕局部删除后改为适宜的内容或将用****错误n****标示的下一语句中的错误改正,然后调试运行程序使其到达该题目的要求。1.已有一模块文件。该模块中的Summary过程是用于计算1!+2!+...+20!,并打印出计算结果,但不完整,请在横线上填入必要的内容,使其完整。模块中的nFactor函数过程用于计算n!。程序如下:PublicFunctionnFactor(ByValnAsInteger)AsDoubleDimiAsIntegerDimtempAsDoubletemp=1Fori=1Tontemp=temp*iNextinFactor=tempEndFunctionPublicSubsummary()DimsumAsDoubleDimiAsIntegerDimnAsIntegern=20Fori=1Tonsum=sum+nFactor(i)NextiForm1.Print"sum="&sumEndSub2.已有一模块文件。该模块中的Calculate过程是产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。程序如下:PublicSubcalculate()Dima(1To100)AsIntegerDimx(1To10)AsIntegerDimiAsInteger,pAsInteger'产生100个[0,99]范围内的随机整数'每行10个打印出来Fori=1To100'********错误1***********a(i)=int(Rnd*100)Ifa(i)<10ThenForm1.PrintSpace(2);a(i);ElseForm1.PrintSpace(1);a(i);EndIfNexti'统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数'并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来Fori=1To100'********错误2**********p=Int(a(i)mod10)'求个位上的数字Ifp=0Thenp=10'********错误3**********x(p)=x(p)+1NextiForm1.Print"统计结果"Fori=1To10p=iIfi=10Thenp=0'********错误4*********Form1.Print"个位数为"+Str(p)+"共"+Str(x(i))+"个"‘个位数为0统计结果保存在x(10)中NextiEndSub。该模块中的Findat过程是用于在一个字符串变量中查找"at",并用消息框给出查找结果的报告:没有找到或找到的个数,但不完整,请在横线上填入必要的内容,使其完整。程序如下:PublicSubFindat()'在字符串str1中查找"at"Dimstr1AsStringDimlengthAsInteger'字符串长度DimsumAsInteger'查到的个数DimiAsIntegerstr1=InputBox("请输入一个字符串")length=len(str1)i=1sum=0DoWhilei<=lengthIfmid(str1,i,2)="at"Thensum=sum+1EndIfi=i+1LoopIfsum=0ThenMsgBox"没有找到!"ElseMsgBox"找到了"&Str(sum)&"个"EndIfEndSub。该模块中的Guess过程是猜数游戏,由计算机产生一个[1,100]的任意整数,输入猜数后计算机给出提示,如果5次后还没有猜中就完毕游戏并公布正确答案。程序如下:PublicSubGuess()DimRAsIntegerDimXAsIntegerDimtimesAsIntegerRandomize'******错误1******R=int(Rnd*100+1)'产生一个1--100的任意整数或int(Rnd*100)+1times=1DoX=Val(InputBox("输入猜数X"))SelectCaseXCaseRForm1.Print"猜中了"ExitDo'*****错误2******CaseIS>RForm1.Print"太大了,继续猜!"CaseElseForm1.Print"太小了,继续猜!"EndSelecttimes=times+1'******错误3******LoopWhiletimes<=5Iftimes>5ThenForm1.Print"猜数失败,游戏完毕!"'******错误4******Form1.Print"正确答案为"&Str(R)EndIfEndSub。该模块中的ArmstrongNumber过程是用于求出1--999之间所有的Armstrong数,并打印出来,但不完整,请在横线上填入必要的内容,使其完整。所谓Armstrong数是指一个数等于它每位上数字的立方和。例如:371=3^3+7^3+1^3,那么371就是一个Armstrong数。程序如下:PublicSubArmstrongNumber()DimarmstrongAsIntegerDimiAsIntegerDimhundredAsInteger'百位上的数字DimtenAsInteger'十位上的数字DimoneAsInteger'个位上的数字Fori=1To999hundred=i\100ten=(i-hundred*100)\10one=imod10Ifi=hundred^3+ten^3+one^3ThenForm1.Printi;"isarmstrongnumber"EndIfNextiEndSub。该模块中的CountTo60过程是用于从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分,要求输出取法的数量及每一种取法的一分、二分、五分的个数。程序如下:PublicSubCountTo60()'从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分'输出取法的数量及每一种取法的一分、二分、五分的个数DimoneAsInteger'一分硬币个数DimtwoAsInteger'二分硬币个数DimfiveAsInteger'五分硬币个数Constn=20'总数20枚DimkAsInteger'取法数量k=0Forone=1Ton'*******错误1********Fortwo=1Ton-onefive=n-one-two'*******错误2*********Ifone+two*2+five*5=60Thenk=k+1Form1.Print"one=";one;"two=";two;"five=";fiveEndIf'*******错误3********Nexttwo'******错误4******NextoneForm1.Print"k=";kEndSub。该模块中的TJ过程是将一批数据中小于零的数及它们的积打印出来,但不完整,请在横线上填入必要的内容,使其完整。模块中的SCSJ过程是产生数据,数据的取值范围为-10~10之间的随机数。程序如下:PrivateConstn=10Privatea(1Ton)AsInteger'TJ过程是将一批数据中小于零的数及它们的积打印出来'数据由SCSJ过程产生,数据的取值范围为-10~10之间的随机整数PublicSubTJ()DimiAsIntegerDimtAsSinglet=1Fori=1To10Ifa(i)<0Thent=t*a(i)EndIfNextiForm1.Print"T=";tEndSubPublicSubSCSJ()RandomizeForm1.Print"原始数据"DimiAsIntegerDimjAsIntegerFori=1Ton'随机产生0或1,为0时取负,为1时取正j=Int(Rnd*2)Ifj=0Thenj=-1a(i)=j*Int(Rnd*(n+1))Form1.Printa(i);NextiEndSub。该模块中的Money过程是用于统计一个有7个工作人员的餐厅发工资所需的100元、50元、10元、5元和1元的票面数,但不完整,请在横线上填入必要的内容,使其完整。模块中的SalaryData过程是给出7个员工的工资。〔工资单位是元〕程序如下:Dimsalary(7)AsIntegerPublicSubMoney()DimhundredAsInteger,totalhundredAsInteger'100元票面数量、总数量DimfiftyAsInteger,totalfiftyAsInteger'50元票面数量、总数量DimtenAsInteger,totaltenAsInteger'10元票面数量、总数量DimfiveAsInteger,totalfiveAsInteger'5元票面数量、总数量DimoneAsInteger,totaloneAsInteger'1元票面数量、总数量DimtotalsalaryAsInteger'工资总计DimiAsInteger,tempAsIntegertotalhundred=0totalfifty=0totalten=0totalfive=0totalone=0totalsalary=0Fori=1To7temp=salary(i)hundred=Int(temp/100)temp=temp–hundred*100fifty=Int(temp/50)temp=temp-fifty*50ten=Int(temp/10)temp=temp-ten*10five=Int(temp/5)temp=temp-five*5one=temptotalhundred=totalhundred+hundredtotalfifty=totalfifty+fiftytotalten=totalten+tentotalfive=totalfive+fivetotalone=totalone+onetotalsalary=totalsalary+salary(i)NextiForm1.Print"共需100元"&Str(totalhundred)&"张"Form1.Print"共需50元"&Str(totalfifty)&"张"Form1.Print"共需10元"&Str(totalten)&"张"Form1.Print"共需5元"&Str(totalfive)&"张"Form1.Print"共需1元"&Str(totalone)&"张"Form1.Print"合计"&Str(totalsalary)&"元"EndSubPublicSubSalaryData()salary(1)=1398salary(2)=1765salary(3)=689salary(4)=1500salary(5)=832salary(6)=590salary(7)=1200EndSub。该模块中的MaxLine过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的位置。模块中的DataProduce过程用于产生原始数据;Average过程用于计算各行的平均值;PrintArray过程用于打印二维数组和行平均值。程序如下:Dima(1To5,1To4)AsIntegerDimave(1To5)AsIntegerPublicSubMaxLine()DimiAsIntegerDimjAsIntegerDimtempAsIntegerDimLine_noAsInteger'最大平均值的行号'找出最大平均值所在行Line_no=1Fori=2To5'******错误1*******Ifave(Line_no)<ave(i)Then'******错误2*******Line_no=iEndIfNexti'交换第一行与最大平均值所在行Forj=1To4temp=a(1,j)'******错误3******a(1,j)=a(Line_no,j)a(Line_no,j)=tempNextj'交换对应行的平均值temp=ave(1)ave(1)=ave(Line_no)ave(Line_no)=temp'打印交换后的数据Form1.Print"交换后的数据和平均值"PrintArrayEndSubPublicSubDataProduce()DimiAsIntegerDimjAsInteger'产生5*4数组Fori=1To5Forj=1To4a(i,j)=Int(100*Rnd)NextjNextiEndSubPublicSubAverage()DimiAsIntegerDimjAsIntegerDimsumAsInteger'计算各行平均值Fori=1To5sum=0Forj=1To4'******错误4******sum=sum+a(i,j)Nextjave(i)=sum/4Nexti'将数组和平均值打印出来Form1.Print"原始数据和平均值"PrintArrayEndSubPublicSubPrintArray()DimiAsIntegerDimjAsIntegerFori=1To5Forj=1To4Form1.Printa(i,j);Spc(3);NextjForm1.Print"平均值=";ave(i)NextiEndSub10.已有一模块文件。该模块中的Wrap过程用于判断一个字符串是否“回文〞。所谓“回文〞是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮〞。程序如下:PublicSubWrap()DimlengthAsIntegerDimstr1AsStringDimstrleftAsStringDimstrrightAsStringDimkAsIntegerstr1=InputBox("请输入任意的字符串")'输入任意字符串,如“潮起潮落,落潮起潮〞'****错误1*****length=len(str1)k=1Do'****错误2*****strleft=mid(str1,k,1)'从左边起逐个取出一个字符'****错误3*****strright=mid(str1,length+1–k,1)'从右边起逐个取出一个字符'****错误4****Ifstrleft<>strrightThenExitDoEndIfk=k+1LoopWhilek<=length/2Ifk>length/2ThenForm1.Printstr1&"是回文"ElseForm1.Printstr1&"不是回文"EndIfEndSub。该模块中的BubbleSort过程是冒泡排序法;GenerateData过程产生10个[1,20]之间互不一样的随机整数;Swap过程交换两个变量的数值。程序如下:PrivateConstn=10Privatea(1Ton)AsInteger'BubbleSort过程是冒泡排序'Swap过程交换两个变量数值'GenerateData过程产生10个[1,20]之间互不一样的随机整数PublicSubBubbleSort()DimiAsInteger,jAsIntegeri=1DoForj=i+1TonIfa(j)>a(i)Then'*******1*********Swapa(j),a(i)‘去掉括号,或改为callSwap(a(j),a(i))EndIfNextji=i+1'*******2*******LoopWhilei<nForm1.Print"排序结果"Fori=1TonForm1.Printa(i);NextiEndSubPublicSubGenerateData()DimiAsIntegerDimjAsIntegerDimbAsBooleanFori=1Tonb=FalseDoWhileNotba(i)=Int(20*Rnd+1)b=True'******3******Forj=1Toi–1Ifa(i)=a(j)Thenb=FalseExitForEndIfNextjLoopForm1.Printa(i)NextiEndSub'********4********PublicSubSwap(aAsInteger,bAsInteger)‘去掉ByVal,数组不能以ByVal传递DimtempAsIntegertemp=aa=bb=tempEndSub。该模块中的Transfer过程用于将一个十六进制整数转换为十进制整数;number函数过程用于将一个十六进制符号转换为数值。程序如下:PublicSubTransfer()DimHexAsString'十六进制数DimDecAsDouble'十进制数DimtempAsStringDimiAsIntegerDimnAsIntegerHex=InputBox("输入一个十六进制整数")'******错误1*******n=len(Hex)i=0Do'******错误2*******temp=Mid(Hex,n-i,1)'******错误3*******Dec=Dec+number〔temp〕*16^ii=i+1LoopWhilei<n'******错误4******Form1.PrintHex&"转换为十进制数为"&str(Dec)‘去掉的str,因为Hex是字符串EndSubPublicFunctionnumber(strAsString)AsIntegerSelectCasestrCase"a","A"number=10Case"b","B"number=11Case"c","C"number=12Case"d","D"num

温馨提示

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

评论

0/150

提交评论