上海海事大学VB程序改错40题.docx
- 文档编号:7867997
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:59
- 大小:27.88KB
上海海事大学VB程序改错40题.docx
《上海海事大学VB程序改错40题.docx》由会员分享,可在线阅读,更多相关《上海海事大学VB程序改错40题.docx(59页珍藏版)》请在冰豆网上搜索。
上海海事大学VB程序改错40题
第2题(1.0分)题号:
129
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
该程序实现将输入的0-255之间的正整数转
'换成二进制数
'------------------------------------------------
OptionExplicit
PrivateSubForm_Click()
Constn=8
Dima(n)AsInteger,sAsString,mAsInteger,xAsInteger
x=Val(InputBox("请输入一个0-255之间的正整数:
"))
Printx
'**********FOUND**********
Form=1Ton
a(m)=xMod2
'**********FOUND**********
x=x/2
Nextm
s=""
Form=nTo0Step-1
'**********FOUND**********
s=Str(a(m))
Nextm
Prints
EndSub
答案:
=======(答案1)=======
Form=0Ton
=======(答案2)=======
x=x\2
=========或=========
x=int(x/2)
=======(答案3)=======
s=s+Str(a(m))
第3题(1.0分)题号:
463
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
以下程序功能是输入三个数,由大到小排序。
'------------------------------------------------
OptionExplicit
DimAAsInteger
DimBAsInteger
DimCAsInteger
PrivateSubForm_Click()
DimnTempAsInteger
A=Val(InputBox("Pleaseinputfirstinteger","输入正整数"))
B=Val(InputBox("Pleaseinputsecondinteger","输入正整数"))
C=Val(InputBox("Pleaseinputthirdinteger","输入正整数"))
'**********FOUND**********
IfA<=CThen
nTemp=A
A=B
B=nTemp
EndIf
'**********FOUND**********
IfB<=CThen
nTemp=A
A=C
C=nTemp
EndIf
'**********FOUND**********
IfA<=BThen
nTemp=B
B=C
C=nTemp
EndIf
Print"Theintegersinorderis";A;B;C
EndSub
答案:
=======(答案1)=======
IfA<=BThen
=========或=========
IfB>=AThen
=======(答案2)=======
IfA<=CThen
=========或=========
IfC>=AThen
=======(答案3)=======
IfB<=CThen
=========或=========
IfC>=BThen
第4题(1.0分)题号:
127
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
下面程序可输出如下图形:
'*
'***
'*****
'*******
'*********
'------------------------------------------------
OptionExplicit
PrivateSubForm_Click()
DimmAsInteger,nAsInteger,sAsString,iAsInteger,jAsInteger
n=4
m=1
s="*"
Fori=5To1Step-1
'**********FOUND**********
PrintSpc(n)
Forj=1To2*m-1
Prints;
Nextj
'**********FOUND**********
n=n+1
'**********FOUND**********
m=m-1
Nexti
EndSub
答案:
=======(答案1)=======
PrintSpc(n);
=========或=========
PrintSpc(i);
=========或=========
?
Spc(n);
=========或=========
?
Spc(i);
=======(答案2)=======
n=n-1
=========或=========
n=-1+n
=======(答案3)=======
m=m+1
第5题(1.0分)题号:
469
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
已知一个函数f(x)=1000*sin(x),利用绘图方法
'在图片框中显示其图形。
结果如图1
'------------------------------------------------
OptionExplicit
PrivateConstpi=3.14159
PrivateSubCommand1_Click()
'**********FOUND**********
DimxAsInteger
Picture1.Scale(-pi,-1200)-(pi,1200)
'**********FOUND**********
Forx=-piTopiSteppi
'**********FOUND**********
Picture1.PSet(x,1000*pi*Sin(x)),vbRed
Nextx
EndSub
答案:
=======(答案1)=======
DimxAsSingle
=========或=========
Dimx!
=======(答案2)=======
Forx=-piTopiSteppi/180
=======(答案3)=======
Picture1.PSet(x,1000*Sin(x)),vbRed
=========或=========
Picture1.PSet(x,Sin(x)*1000),vbRed
第6题(1.0分)题号:
497
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。
'------------------------------------------------
OptionExplicit
PrivateSubForm_Click()
DimNAsInteger,SumAsInteger,S1AsString,S2AsString
DimiAsInteger,ChAsString
Sum=0
N=InputBox("输入整数n")
S1=Str(N)
'**********FOUND**********
S1=RTrim(S1)
Fori=1ToLen(S1)
'**********FOUND**********
Ch=Mid(N,i,1)
'**********FOUND**********
Sum=Val(Ch)
Nexti
Print"该整数的各位数之和是:
";Sum
EndSub
答案:
=======(答案1)=======
S1=Trim(S1)
=========或=========
S1=lTrim(S1)
=======(答案2)=======
Ch=Mid(S1,i,1)
=======(答案3)=======
Sum=Sum+Val(Ch)
=========或=========
Sum=Sum+Val(Ch)
第7题(1.0分)题号:
454
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
本程序的功能是随机产生的10个两位正整数,并进行递减排序。
'------------------------------------------------
OptionExplicit
PrivateSubCreateRND()
DimTempAsInteger
DimIAsInteger
DimNAsInteger
DimX(10)AsInteger
DimJAsInteger
N=10
Print"数据:
"
ForI=1ToN
'**********FOUND**********
X(I)=Int(Rnd()*90)
PrintX(I);
NextI
Print"排序:
"
ForI=0ToN-1
ForJ=I+1ToN
'**********FOUND**********
IfX(I)>X(J)Then
'**********FOUND**********
Temp=X(I)
X(J)=X(I)
X(I)=Temp
EndIf
NextJ
PrintX(I);
NextI
EndSub
PrivateSubCommand1_Click()
CreateRND
EndSub
答案:
=======(答案1)=======
X(I)=Int(10+Rnd()*90)
=========或=========
X(I)=Int(10+Rnd()*90)
=======(答案2)=======
IfX(I) =========或========= IfX(I)<=X(J)Then =========或========= IfX(J)>X(I)Then =========或========= IfX(J)>=X(I)Then =======(答案3)======= temp=X(J) 第9题(1.0分)题号: 130 '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目: 以下程序段用于计算5的N次方。 '------------------------------------------------ OptionExplicit PrivateSubForm_Click() DimnAsInteger,kAsInteger,sAsLong n=InputBox("Inputn") '**********FOUND********** k=0 '**********FOUND********** s=0 DoWhilek<=n s=s*5 k=k+1 '**********FOUND********** Next Print"5的";"n次方是";s EndSub 答案: =======(答案1)======= k=1 =======(答案2)======= s=1 =======(答案3)======= Loop 第11题(1.0分)题号: 452 '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目: 用自定义函数的方法求sum(x),求当-1≤x≤1时, 'sum(x)=x/2! +x^2/3! +x^3/4! +……+x^n/(n+1)! , '当x〉1或x〈-1时,函数值为0。 当n〈=0时,输入数 '据错误。 X、N都是由用户输入。 '------------------------------------------------ OptionExplicit PrivateSubCommand1_Click() DimsAsSingle DimnAsInteger,xAsSingle,kAsInteger n=Val(InputBox("Pleaseinputaintegervalue: ")) x=Val(InputBox("Pleaseinputasinglevalue: ")) Ifn<=0Then k=MsgBox("数据输入错误! ",vbRetryCancel+vbExclamation,"数据输入") ExitSub EndIf s=Sum(x,n) Prints EndSub FunctionSum(xAsSingle,nAsInteger) DimiAsInteger,ssAsLong ss=1 Sum=0 Ifx>1Orx<-1Then '**********FOUND********** ExitDo Else '**********FOUND********** Fori=2Ton ss=ss*i '**********FOUND********** Sum=x^(i-1)/ss Nexti EndIf EndFunction 答案: =======(答案1)======= exitFunction =======(答案2)======= Fori=2Ton+1 =========或========= Fori=2To1+n =======(答案3)======= sum=sum+x^(i-1)/ss 第14题(1.0分)题号: 136 '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目: 程序功能为打印下列图形: '* '** '*** '**** '***** '------------------------------------------------ OptionExplicit PrivateSubForm_Click() Cls DimiAsInteger DimjAsInteger '**********FOUND********** Fori=1To7 '**********FOUND********** Forj=1To5 Print"*"; '**********FOUND********** Loop Print Nexti EndSub 答案: =======(答案1)======= Fori=1To5 =======(答案2)======= Forj=1Toi =======(答案3)======= Nextj =========或========= Next 第16题(1.0分)题号: 461 '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目: 产生30个小于100的成绩随机数,并统计出优、良 '、中等、及格、不及格数的个数,并计算出成绩属 '于优秀段的成绩平均分。 '------------------------------------------------ OptionExplicit PrivateSubForm_Click() Dimk%,a%,bjg%,jg%,zd%,lh%,yxAsInteger DimpjfAsInteger Randomize pjf=0 Fork=1To30 '**********FOUND********** a=Int(Rnd()) SelectCasea Case0To59 bjg=bjg+1'不及格 Case60To69 jg=jg+1'及格 Case70To79 zd=zd+1'中等 Case80To89 lh=lh+1'良好 Case90To100 yx=yx+1'优秀 '**********FOUND********** pjf=pjf+1 EndSelect Nextk '**********FOUND********** Ifyx>0Thenpjf=pjf/30 Debug.Print"不及格"+Str$(bjg)+"人,及格"+Str$(jg)+"人,中等"+Str$(zd)+"人"; Debug.Print"良好"+Str$(lh)+"优秀"+Str$(yx)+"人" Debug.Print"优秀分数段成绩平均分"&pjf EndSub 答案: =======(答案1)======= a=Int(Rnd()*100) =========或========= a=Int(Rnd*100) =======(答案2)======= pjf=pjf+a =======(答案3)======= Ifyx>0Thenpjf=pjf/yx 第17题(1.0分)题号: 456 '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目: 挑选单数并排序程序: 程序启动后由计算机自动产 '生20个属于[100,300]之间的随机整数,单击"显 '示全体"按钮时,在Form1上显示这20个随机数; '单击"显示奇数"按钮时,在Form1上显示其中的奇数; '单击"排序"按钮时,在Form1上将这些奇数从小到大显示。 '要求显示格式为每行显示5个数据。 '------------------------------------------------ OptionExplicit Privatea(20)AsInteger,b(20)AsInteger PrivatekAsInteger PrivateSubcmdodd_Click() DimIAsInteger k=0 ForI=1To20 '**********FOUND********** Ifa(I)/2=Int(a(I)/2)Then k=k+1 b(k)=a(I) EndIf NextI ForI=1Tok Printb(I); '**********FOUND********** IfInt(I/5)<>I/5ThenPrint NextI Print EndSub PrivateSubcmdAll_Click() Randomize DimIAsInteger ForI=1To20 '**********FOUND********** a(I)=Int(Rnd()*20+100) Printa(I), IfInt(I/5)=I/5ThenPrint NextI Print EndSub PrivateSubcmdsort_Click() DimIAsInteger DimJAsInteger DimTempAsInteger ForI=1Tok-1 ForJ=ITok Ifb(I)>b(J)ThenTemp=b(I): b(I)=b(J): b(J)=Temp NextJ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海 海事 大学 VB 程序 改错 40