VB改错练习答案.docx

上传人:b****8 文档编号:9822298 上传时间:2023-02-06 格式:DOCX 页数:33 大小:28.15KB
下载 相关 举报
VB改错练习答案.docx_第1页
第1页 / 共33页
VB改错练习答案.docx_第2页
第2页 / 共33页
VB改错练习答案.docx_第3页
第3页 / 共33页
VB改错练习答案.docx_第4页
第4页 / 共33页
VB改错练习答案.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

VB改错练习答案.docx

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

VB改错练习答案.docx

VB改错练习答案

一.选择结构

'题目:

在下面的程序段中过程pd可以判断任意三个数能否构成三角形的三边,利用该过程的判定结果,

'对能构成三角形的计算其面积,构不成的显示"不能构成三角形"

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

'**********FOUND**********

Dimx%,y%,z%,s%,bAsBoolean,hAsSingle

x=InputBox("请输入三角形的边长")

y=InputBox("请输入三角形的边长")

z=InputBox("请输入三角形的边长")

b=pd(x,y,z)

h=(x+y+z)/2

'**********FOUND**********

IfNotbThen

s=Sqr(h*(h-x)*(h-y)*(h-z))

Print"三角形面积是";s

Else

Print"不能构成三角形"

EndIf

EndSub

'**********FOUND**********

PublicFunctionpd()AsBoolean

Ifx>0Andy>0Andz>0Andx+y>zAndx+z>yAndy+z>xThen

pd=True

Else

pd=False

EndIf

EndFunction

(答案1)Dimx%,y%,z%,s!

bAsBoolean,hAsSingle

(答案2)Ifb=trueThen

(答案3)PublicFunctionpd(x%,y%,z%)AsBoolean

'------------------------------------------------

'题目:

请根据下列描述编写购物优惠程序。

某商场为了加速促成商品流通,采用购物打折的优惠办法,

每位顾客一次购物

(1)在100元以上者,按九五折优惠;

'

(2)在200元以上者,按九折优惠;

(3)在300元以上者,按八折优惠;

(4)在500元以上者,按七折优惠。

'------------------------------------------------

OptionExplicit

PrivateSubCommand1_Click()

DimxAsSingle,yAsSingle

x=Val(Text1.Text)

Ifx<100Then

'**********FOUND**********

x=y

Else

Ifx<200Then

y=0.95*x

Else

Ifx<300Then

y=0.9*x

Else

Ifx<500Then

y=0.8*x

Else

y=0.7*x

'**********FOUND**********

ElseIf

EndIf

EndIf

EndIf

'**********FOUND**********

Text2.Text=x

EndSub

(答案1)y=x

(答案2)EndIf

(答案3)Text2.Text=y

'------------------------------------------------

'题目:

程序功能根据输入的学习成绩,分别显示

优秀(90分以上),良好(75分以上),及格(60分以上),不及格四个等级.

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

Cls

DimiAsInteger

i=InputBox("请输入学习成绩")

SelectCasei

'**********FOUND**********

Case0

MsgBox"成绩应该在0--100之间"""

'**********FOUND**********

Case90

Print"优秀"

Case75To89

Print"良好"

Case60To74

Print"及格"

'**********FOUND**********

Case

MsgBox"不及格",vbCritical

EndSelect

EndSub

(答案1)Caseis>100,is<0

(答案2)Case90to100

(答案3)Caseelse

二.一般

'------------------------------------------------

'题目:

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

'------------------------------------------------

OptionExplicit

PrivateSubForm_Load()

Dima!

b!

c!

root1#,root2#,workAsDouble

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

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

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

'**********FOUND**********

work=b*2-4*a*c

Ifwork>=0Anda<>0Then

'**********FOUND**********

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

'**********FOUND**********

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

Print"有二个实根"+Str$(root1)+","+Str$(root2)

Else

Print"无实根!

"

EndIf

EndSub

(答案1)work=b^2-4*a*c

(答案2)root1=(-b+Sqr(work))/(2*a)

(答案3)root2=(-b-Sqr(work))/(2*a)

'------------------------------------------------

'题目:

求s=72+102+132+……832的值。

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

Cls

DimsAsLong

DimiAsInteger

'**********FOUND**********

s=1

'**********FOUND**********

Fori=72To832

s=s+i

'**********FOUND**********

loop30

Prints

EndSub

===(答案1)======(答案2)=======(答案3)===

s=0Fori=72To832step30Nexti

'------------------------------------------------

'题目:

该程序的功能是求出100到200之间的全部素数,

'并且按每行4个、每个数据之间有10个空格的格式输出。

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

DimkAsInteger,iAsInteger,jAsInteger

k=0

Fori=100To200

'**********FOUND**********

Forj=1Toi-1

IfiModj=0ThenExitFor

Nextj

Ifj=iThen

'**********FOUND**********

Printi;Tab(10);

k=k+1

'**********FOUND**********

IfkMod5=0ThenPrint;

EndIf

Nexti

EndSub

(答案1)Forj=2Toi-1

(答案2)Printi;Space(10);

(答案3)IfkMod4=0ThenPrint

'------------------------------------------------

'题目:

输入一个字符串,将所有的小写字母都转换为大写字母。

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

Dims1AsString,s2AsString,iAsInteger,tAsString

s1=InputBox("输入字符串,#号结束")

i=1

'**********FOUND**********

s1=Mid(s1,i,1)

DoWhilet<>"#"

'**********FOUND**********

Ift>="a"Andt<="z"Thent=Chr(Asc(t)-30)

s2=s2+t

i=i+1

t=Mid(s1,i,1)

Loop

'**********FOUND**********

Print"新字符串为:

";s1

EndSub

(答案1)t=Mid(s1,i,1)

(答案2)Ift>="a"Andt<="z"Thent=Chr(Asc(t)-32)

(答案3)Print"新字符串为:

";s2

三.级数

'------------------------------------------------

'题目:

程序功能:

求1+2+3……,直到其和超出3000为止,并输入结果。

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

Cls

DimiAsInteger

DimsAsSingle

i=0

'**********FOUND**********

s=1

Do

'**********FOUND**********

i=i+2

s=s+i

'**********FOUND**********

Loops>3000

Print"从1到:

";i;"的和是";s

EndSub

(答案1)s=0

(答案2)i=i+1

(答案3)Loopuntils>3000

'------------------------------------------------

'题目:

用自定义函数的方法求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

(答案3)sum=sum+x^(i-1)/ss

'------------------------------------------------

'题目:

在下列程序段中,过程fb可以显示任意长度的菲波那契数列

现要求通过键盘输入一数字,利用该过程显示不超过指定数字大小的数列

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

DimxAsInteger

x=Val(InputBox("请指定显示范围"))

'**********FOUND**********

callfby

EndSub

PublicSubfb(xAsInteger)

Dimi&,j%,k%

j=1

i=1

Printi;j;

k=i+j

'**********FOUND**********

DoWhilek>x

Printk;

i=j

j=k

'**********FOUND**********

k=i-j

Loop

EndSub

(答案1)callfb(x)

(答案2)DoWhilek

(答案3)k=i+j

四.数字关系

'------------------------------------------------

'题目:

编程求一个十进制整数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)

(答案2)Ch=Mid(S1,i,1)

(答案3)Sum=Sum+Val(Ch)

'------------------------------------------------

'题目:

下面函数的功能是:

求变量s(s=a+aa+aaa+aaaa+……)

'的值。

其中,a是一个0-9的数字,总共累加a项。

'例如,当a=3时,s=3+33+333(共累加3项)。

'------------------------------------------------

OptionExplicit

PublicFunctionCalc(aAsInteger)

DimsAsLong

DimtAsLong

DimiAsInteger

s=a

'**********FOUND**********

t=1

Fori=2Toa

'**********FOUND**********

t=t+a

s=s+t

Nexti

Calc=s

Prints

EndFunction

PrivateSubCommand1_Click()

DimiAsInteger

i=InputBox("请输入数字(0-9):

")

'**********FOUND**********

Calccalli

EndSub

(答案1)t=a

(答案2)t=t*10+a

(答案3)CallCalc(i)

'------------------------------------------------

'题目:

一个两位的正整数,如果将它的个位数与十位数对调,则产生另一个正整数,

我们把后者叫做前者的对调数,

现给定一个两位的正数,请找到另一个两位的正整数,使得这两个两位正整数之和

'等于它们各自的对调数之和。

'例如:

12+32=23+21。

下面程序把具有这种特征的两位正整数都找出来。

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

DimkAsInteger,gAsInteger,hAsInteger,mAsInteger

DimnAsInteger,iAsInteger,tAsInteger,sAsInteger,jAsInteger

k=InputBox("请输入一个两位数")

k=Val(k)

g=Int(k/10)

'**********FOUND**********

h=k-g*10m=h*10+g

Print

Print"输入的两位数是";k

Print

'**********FOUND**********

Forn=1To99

i=Int(n/10)

j=n-i*10

t=i*10+j

s=j*10+i

Ifk+n=m+sThen

Print"";k;"+(";t;")=(";s;")+";m

'**********FOUND**********

End

Nextn

EndSub

(答案1)h=k-g*10:

m=h*10+g

(答案2)Forn=11To99

(答案3)EndIf

五.数组

'------------------------------------------------

'题目:

下面程序段将7个随机整数从小到大排序

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

Dimt%,m%,n%,w%,a(7)AsInteger

Form=1To7

a(m)=Int(10+Rnd()*90)

Printa(m);"";

Nextm

Print

Form=1To6

t=m

'**********FOUND**********

Forn=2To7

'**********FOUND**********

Ifa(t)>a(n)Thenn=t

Nextn

'**********FOUND**********

Ift=mThen

w=a(m)

a(m)=a(t)

a(t)=w

EndIf

Nextm

Form=1To7

Printa(m)

Nextm

EndSub

(答案1)Forn=m+1To7

(答案2)Ifa(t)>a(n)Thent=n

(答案3)Ift<>mThen

'------------------------------------------------

'题目:

以下程序用于建立一个三行三列的矩阵,使其两条对角线上数字为1,其余位置为0

'------------------------------------------------

OptionExplicit

PrivateSubForm_Click()

Dimx(3,3),nAsInteger,mAsInteger

Forn=1To3

Form=1To3

'**********FOUND**********

Ifn=mThenx(n,m)=1Elsex(n,m)=0

'**********FOUND**********

Nextn,m

Forn=1To3

Form=1To3

'**********FOUND**********

Printx(m,n)

Nextm

Print

Nextn

EndSub

(答案1)Ifn=mOrm=3+1-nThenx(n,m)=1Elsex(n,m)=0

(答案

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

当前位置:首页 > 幼儿教育 > 少儿英语

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

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