VB程序改错40题含答案.docx

上传人:b****4 文档编号:5403820 上传时间:2022-12-16 格式:DOCX 页数:58 大小:27.38KB
下载 相关 举报
VB程序改错40题含答案.docx_第1页
第1页 / 共58页
VB程序改错40题含答案.docx_第2页
第2页 / 共58页
VB程序改错40题含答案.docx_第3页
第3页 / 共58页
VB程序改错40题含答案.docx_第4页
第4页 / 共58页
VB程序改错40题含答案.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

VB程序改错40题含答案.docx

《VB程序改错40题含答案.docx》由会员分享,可在线阅读,更多相关《VB程序改错40题含答案.docx(58页珍藏版)》请在冰豆网上搜索。

VB程序改错40题含答案.docx

VB程序改错40题含答案

【程序改错】

题目:

该程序实现将输入的0-255之间的正整数转换成二进制数

OptionExplicit

PrivateSubForm_Click()

Constn=8

Dima(n)AsInteger,sAsString,mAsInteger,xAsInteger

x=Val(InputBox("请输入一个0-255之间的正整数:

"))

Printx

Form=1Ton

a(m)=xMod2

x=x/2

Nextm

s=""

Form=nTo0Step-1

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","输入正整数"))

IfA<=CThen

nTemp=A

A=B

B=nTemp

EndIf

IfB<=CThen

nTemp=A

A=C

C=nTemp

EndIf

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

PrintSpc(n)

Forj=1To2*m-1

Prints;

Nextj

Print

n=n+1

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()

DimxAsInteger

Picture1.Scale(-pi,-1200)-(pi,1200)

Forx=-piTopiSteppi

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)

S1=RTrim(S1)

Fori=1ToLen(S1)

Ch=Mid(N,i,1)

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

X(I)=Int(Rnd()*90)

PrintX(I);

NextI

Print

Print"排序:

"

ForI=0ToN-1

ForJ=I+1ToN

IfX(I)>X(J)Then

Temp=X(I)

X(J)=X(I)

X(I)=Temp

EndIf

NextJ

PrintX(I);

NextI

Print

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")

k=0

s=0

DoWhilek<=n

s=s*5

k=k+1

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

ExitDo

Else

Fori=2Ton

ss=ss*i

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

Fori=1To7

Forj=1To5

Print"*";

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

a=Int(Rnd())

SelectCasea

Case0To59

bjg=bjg+1'不及格

Case60To69

jg=jg+1'及格

Case70To79

zd=zd+1'中等

Case80To89

lh=lh+1'良好

Case90To100

yx=yx+1'优秀

pjf=pjf+1

EndSelect

Nextk

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

Ifa(I)/2=Int(a(I)/2)Then

k=k+1

b(k)=a(I)

EndIf

NextI

ForI=1Tok

Printb(I);

IfInt(I/5)<>I/5ThenPrint

NextI

Print

EndSub

PrivateSubcmdAll_Click()

Randomize

DimIAsInteger

ForI=1To20

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

NextI

ForI=1Tok

Printb(I);

IfInt(I/5)=I/5ThenPrint

NextI

EndSub

答案:

=======(答案1)=======

Ifa(I)/2<>Int(a(I)/2)Then

=========或=========

Ifa(I)mod2<>0Then

=========或=========

If0<>a(I)mod2Then

=========或=========

Ifa(I)/2<>a(I)\2Then

=========或=========

Ifint(a(I)/2)<>a(I)/2Then

=========或=========

Ifa(I)\2<>a(I)/2Then

=======(答案2)=======

IfInt(I/5)=I/5ThenPrint

=========或=========

IfImod5=0ThenPrint

=========或=========

If0=Imod5ThenPrint

=========或=========

IfI/5=int(I/5)ThenPrint

=========或=========

IfI/5=I\5ThenPrint

=========或=========

IfI\5=I/5ThenPrint

=======(答案3)=======

a(I)=Int(Rnd()*200+100)

第19题(1.0分)题号:

499

'【程序改错】

'题目:

编程将一个数从已经有序(设从小到大排序)的数组

'中删除,使数组还继续保持有序而且其余元素按照下

'标连续存放。

OptionExplicit

PrivateSubForm_Click()

DimA()AsInteger,NAsInteger,FlagAsInteger

DimiAsInteger,XAsInteger,PAsInteger

Flag=0

N=InputBox("输入元素个数")

DimA(N)

Fori=1ToN

A(i)=InputBox("输入数组的第"&i&"个元素")

Nexti

Print"删除某元素前的数组"

Fori=1ToN

PrintA(i);

Nexti

Start:

X=InputBox("输入要删除的元素:

")

Fori=1ToN

IfX=A(i)ThenP=i:

Flag=1

Nexti

IfFlag=0ThenMsgBox("没有此元素"):

GoToStart

Fori=PToN-1

A(i+1)=A(i)

Nexti

N=N+1

Print"删除元素后的数组:

"

Fori=1ToN

PrintA(i);

Nexti

EndSub

答案:

=======(答案1)=======

ReDimA(N)

=======(答案2)=======

A(i)=A(i+1)

=========或=========

A(i)=A(1+i)

=======(答案3)=======

N=N-1

第20题(1.0分)题号:

139

'【程序改错】

'题目:

随机产生并输出100以内大于50的20个整数,输

'出时每5个数一行。

OptionExplicit

PrivateSubForm_Click()

RandomizeTimer

DimiAsInteger,maAsInteger

i=1

DoUntili<20

ma=Rnd()*100\1

Ifma>50Then

Printma;

i=i+1

Ifi\5=0Then

Print

EndIf

EndIf

Loop

EndSub

答案:

=======(答案1)=======

i=0

=======(答案2)=======

Dowhilei<20

=========或=========

Dowhile20>i

=========或=========

Dowhilei<=19

=========或=========

Dowhile19>=i

=======(答案3)=======

Ifimod5=0Then

第23题(1.0分)题号:

474

'【程序改错】

'题目:

程序功能为求解一元二次方程的实根,请修正程序中错误。

OptionExplicit

PrivateSubForm_Load()

Dima!

b!

c!

root1#,root2#,workAsDouble

a=Val(InputBox("请输入系数a的值"))

b=Val(InputBox("请输入系数b的值"))

c=Val(InputBox("请输入系数c的值"))

work=b*2-4*a*c

Ifwork>=0Anda<>0Then

root1=(Sqr(work))/(2*a)

root2=(Sqr(work))/(2*a)

Debug.P

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1