大学VB考试程序调试题及参考答案.docx

上传人:b****6 文档编号:6533110 上传时间:2023-01-07 格式:DOCX 页数:48 大小:31.06KB
下载 相关 举报
大学VB考试程序调试题及参考答案.docx_第1页
第1页 / 共48页
大学VB考试程序调试题及参考答案.docx_第2页
第2页 / 共48页
大学VB考试程序调试题及参考答案.docx_第3页
第3页 / 共48页
大学VB考试程序调试题及参考答案.docx_第4页
第4页 / 共48页
大学VB考试程序调试题及参考答案.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

大学VB考试程序调试题及参考答案.docx

《大学VB考试程序调试题及参考答案.docx》由会员分享,可在线阅读,更多相关《大学VB考试程序调试题及参考答案.docx(48页珍藏版)》请在冰豆网上搜索。

大学VB考试程序调试题及参考答案.docx

大学VB考试程序调试题及参考答案

程序调试题及参考答案

[1].该过程是用于计算一元二次方程的根,并将结果输出来。

OptionExplicit

PublicSubgetanswer()

Dimdalt!

a#,b#,c#

a=InputBox("输入系数a")

b=InputBox("输入系数b")

c=InputBox("输入系数c")

dalt=b*b-4*a*c

Ifdalt>0Then'----1----

dalt=Sqr(dalt)

MsgBoxFormat((-b+dalt)/2/a,"0.00")+Chr(13)+Chr(10)+Format((-b-dalt)/2/a,"0.00")

ElseIfdalt=0Then'---2----

MsgBoxFormat(-b/2/a,"0.00")+Chr(13)+Chr(10)+Format(-b/2/a,"0.00")

Else

dalt=Sqr(-dalt)'---3----

MsgBoxFormat(-b/2/a,"0.00")+"+"+Format((dalt)/2/a,"0.00")+"i"+Chr(13)+Chr(10)+Format(-b/2/a,"0.00")+"-"+Format((dalt)/2/a,"0.00")+"i"

EndIf

EndSub

'[2]过程prt用以打印一个菱形图案,请在横线上填入'必要的内容,使其完整。

OptionExplicit

PublicSubprt()

'打印数字金字塔

'#

'###

'#####

'#######

'#########

'#######

'#####

'###

'#

DimiAsInteger,jAsInteger

DimstartAsString'每行起始空格数

DimCountAsInteger'每行#个数

Fori=1To9

Ifi<=5Then

start=Space(21-i)'------1------

Count=2*i-1

Else

start=Space(11+i)'i>=6

Count=19-2*i'------2------

EndIf

Form1.Printstart;'------3------

Forj=1ToCount

Form1.Print"#";

Nextj

Form1.Print'------4------

Nexti

EndSub

'[3]过程pyramid用以打印一个数字金字塔,请在横线上填入必要的内容,使其完整。

OptionExplicit

PublicSubpyramid()

'打印数字金字塔

'1

'222

'33333

'4444444

'555555555

'6666666

'77777

'888

'9

DimiAsInteger

DimjAsInteger

DimstartAsString'每行起始空格数

DimnumAsInteger'每行数字个数

Fori=1To9

Ifi<=5Then

start=Space(20-i)

num=2*i-1

Else

start=Space(10+i)'------1------

num=19-2*i'------2------

Form1.Print'------4------

Nexti

EndSub

'[4]打印由数字组成的如下所示金字塔图案

OptionExplicit

PublicSubprt()

'9

'888

'77777

'6666666

'555555555

'44444444444

'3333333333333

'222222222222222

'111111*********11

DimiAsInteger,jAsInteger

'******错误1******Fori=9To1

Fori=9To1Step-1

Form1.PrintSpace(i);

'******错误2******Forj=1To2*i-1

Forj=1To2*(9-i+1)-1

'******错误3******Form1.Printi

Form1.PrintTrim(Str(i));

Nextj

Form1.Print

Nexti

EndSub

'[5]计算s=7+77+777+……+(n个7组成的数)。

PublicSubtotal()

'计算s=7+77+777+……+(n个7组成的数)

Constn=20

DimsAsSingle

DimiAsInteger

Fori=1Ton

s=s+number(i)'-------1------'------2-------

Nexti

Form1.Print"s=";s

EndSub

PublicFunctionnumber(nAsInteger)AsSingle'------2-------

DimiAsInteger

number=0

Fori=1Ton

number=number*10+7'------3------

Nexti

EndFunction

'[6]eat()过程是用于计算猴子共摘了多少个桃子。

(小猴在一天摘了若干个桃子,当天吃掉了一半多一个'第二天吃了剩下的一半多一个;以后每天都吃尚存的一半零一个.到第7天早上要吃时只剩下一个了)

OptionExplicit

PublicSubeat()

Dimn%,i%,x%

x=1

Fori=6To1Step-1'---1--------2----

x=(x+1)*2'-----3----

Nexti

Form1.Print"共有";x;"个桃子"

EndSub

'[7]Modify.bas模块中的Prime过程是求出100到200之间所有的素数',并打印出来。

PublicSubprime()

'打印出100到200之间所有的素数,并统计素数的个数

DimiAsInteger

DimjAsInteger

DimkAsInteger

DimtAsInteger'统计素数的个数

DimbAsBoolean

Fori=100To200

b=True

k=2'------1-------

j=Int(Sqr(i))

DoWhilek<=jAndb

IfiModk=0Then

b=False'------2------

EndIf

k=k+1'------3------

Loop

Ifb=TrueThen'---4---

t=t+1

Form1.Printi

EndIf

Nexti

Form1.Print"t=";t

EndSub

'[8]过程even用以验证一个偶数可以分解为两个素数之和;'Isprime用以判断x是否是素数。

PublicSubeven()

'从键盘输入一个大于4的偶数,将它所有的不重复的分解式求出

DimxAsInteger

DimiAsInteger

DoWhilex<4OrxMod2<>0'------1----保证x是大于4的偶数

x=Val(InputBox("x="))

Loop

Fori=3Tox/2Step2'在不大于x的奇数中找素数

IfIsprime(i)AndIsprime(x-i)Then'------2------

Form1.Printx;"=";i;"+";x-i

EndIf

Nexti

EndSub

PublicFunctionIsprime(xAsInteger)AsBoolean

DimiAsInteger

Isprime=True'------3------

Fori=2Tox-1

IfxModi=0Then'------4------

Isprime=False

ExitFor

EndIf

Nexti

EndFunction

'[9]该过程是用于找出被3、5、7除,'余数为1的最小的5个整数,并将结果输出来。

OptionExplicit

PublicSubfind()

DimcountN%,n%

countN=0

n=1

Do

n=n+1'----1----

IfnMod3=1AndnMod5=1AndnMod7=1Then'-----2----

Form1.Printn

countN=countN+1

EndIf

LoopWhilecountN<5'----3-----

EndSub

'[10]rn过程通过调用函数isLeapYear判断某年是否是闰年'若是,则打印"今年是润年",否则,打印"今年不是闰年"。

OptionExplicit

PublicSubrn()

Constyear=2023

IfNot(isLeapYear(year))Then'----1----

Form1.Print"今年是闰年"

Else

Form1.Print"今年不是闰年"

EndIf

EndSub

FunctionisLeapYear(yAsInteger)AsBoolean

IfyMod400=0Or(yMod4=0AndyMod100<>0)Then'----2--------3--------4----

isLeapYear=False

Else

isLeapYear=True

EndIf

EndFunction

'[11]在考生目录中,已有模块文件Modify.bas。

'Modify.bas模块中的CountTo60过程是用于从一堆一分、二分、五分'的硬币中取出20枚,使其总值为60分,要求输出取法的数量'及每一种取法的一分、二分、五分的个数。

PublicSubCountTo60()

DimoneAsInteger'一分硬币个数

DimtwoAsInteger'二分硬币个数

DimfiveAsInteger'五分硬币个数

Constn=20'总数20枚

DimkAsInteger'取法数量

k=0

Forone=1Ton

'*******错误1********

Fortwo=1Ton-one'Fortwo=one+1Ton

five=n-one-two

'*******错误2*********

Ifone+two*2+five*5=60Then'one+two+five=60

k=k+1

Form1.Print"one=";one;"two=";two;"five=";five

EndIf

'*******错误3********

Nexttwo'Nextone

'******错误4******

Nextone'Nexttwo

Form1.Print"k=";k

EndSub

'[12]过程same用以找出1-100之间所有的同构数。

所谓同构数'是指一个数出现在它的平方数的右端,如25在25平方62的右端,'则25为同构数。

利用数字转字符再取出右端字符的方法进行判断。

PublicSubsame()

DimiAsInteger

Dimx1AsString,x2AsString

Fori=1To1000

x1=Trim(Str(i))'------1------'将i转字符型

x2=Trim(Str(i^2))'------2------'将i^2转字符型

Ifx1=Right(x2,Len(x1))Then'------3------

Form1.Printi;"是同构数"

EndIf

Nexti

EndSub

'[13]Modify.bas模块中的ArmstrongNumber过程是用于'求出1-999之间所有的Armstrong数,并打印出来。

'所谓Armstrong数是指一个数等于它每位上数字的立方和?

PublicSubArmstrongNumber()

DimarmstrongAsInteger

DimiAsInteger

DimhundredAsInteger'百位上的数字

DimtenAsInteger'十位上的数字

DimoneAsInteger'个位上的数字

Fori=1To999

hundred=i\100'----1----

ten=Int((iMod100)\10)

one=iMod10'---2----

Ifi=hundred^3+ten^3+one^3Then'----3----

Form1.Printi;"isarmstrongnumber"

EndIf

Nexti

EndSub

'[14]过程cloze用以求1~1000中的所有完数。

所谓完数是指'一个数的所有因子之和等于其自身。

OptionExplicit

Dima(50)AsInteger'存放每个数分解出来的因子

PublicSubcloze()

'求1--100中的所有完数

DimiAsInteger,jAsInteger

DimnAsInteger'因子个数

DimsAsInteger'因子和

Fori=1To1000

n=0'因子个数

s=0'因子和

factori,n'-------1------

Forj=1Ton

s=s+a(j)

Nextj

Ifi=sThen'-------2------

Form1.Printi

EndIf

Nexti

EndSub

PublicSubfactor(ByValxAsInteger,ByRefkAsInteger)

DimiAsInteger

a

(1)=1

k=1

Fori=2Tox/2'------3------

IfxModi=0Then

k=k+1

a(k)=i'------4------

EndIf

Nexti

EndSub

'[15]Modify.bas模块中的summary过程是用于计算s=1+2+2^2+2^3+…'直至s超过1E+16

PublicSubsummary()

DimsAsSingle

DimiAsInteger

s=1'----1----

i=1

DoWhiles<1E+16'----2----

s=s+2^i

i=i+1'----3----

Loop

Form1.Print"S=";s

EndSub

'[16]Modify.bas模块中的qiuN过程是用于求出'满足不等式1+2x+3x^2+4x^3+…+(n+1)x^n<1000的'最大n值。

其中x是大于等于1的实数,其值由键盘输入。

OptionExplicit

PublicSubqiuN()'该过程是用于求出满足不等式'1+2x+3x^2+4x^3+…+(n+1)x^n<1000的最大n值,'其中x是大于等于1的实数,其值由键盘输入。

DimxAsSingle,sAsSingle,nAsInteger,s1AsSingle,pAsSingle

x=Val(InputBox("x="))

s=1:

n=1

p=x

Whiles<1000'----1----

s1=s

s=s+(n+1)*p

p=p*x'----2----

n=n+1'----3----

Wend

n=n-2'----4-----

Form1.Print"TheMaxismofn";n,"s=";s1

EndSub

'[17]sum过程用于计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20)

OptionExplicit

PublicSubsum()

DimfAsSingle

DimiAsInteger

DimsignAsInteger

sign=-1'------1------

f=1

Fori=2To19'------2------

f=f+sign/(i*(i+1))

sign=-sign'------3------

Nexti

Form1.Print"f=";f

EndSub

'[18]Modify.bas模块中的JiSuan过程是用于计算'1-(1/2)+(1/3)-……+(1/99)-(1/100)的值并打印出来。

PublicSubJiSuan()

'计算1-(1/2)+(1/3)-...+(1/99)-(1/100)的值并打印出来

DimiAsInteger

'******错误1*******DimkAsInteger

DimkAsSingle

DimsAsSingle

s=0

'*******错误2*******Fori=1To100

Fori=1To100Step2

k=1/i

s=s+k

'*******错误3*******k=1/i+1

k=1/(i+1)

s=s-k

Nexti

Form1.Print"s=";s

EndSub

'[19]Modify.bas模块中的summary过程是用于计算1!

+2!

+…+20!

,'并打印出计算结果.Modify.bas模块中的nFaction函数过程用于计算n!

PublicFunctionnFactor(ByValnAsInteger)AsDouble

DimiAsInteger

DimtempAsDouble

temp=1'----1----

Fori=1Ton

temp=temp*i

Nexti

nFactor=temp'----2----

EndFunction

PublicSubsummary()

DimsumAsDouble

DimiAsInteger

DimnAsInteger

n=20

Fori=1Ton

sum=sum+nFactor(i)'----3----

Nexti

Form1.Print"sum="&sum'----4----

EndSub

'[20]find过程是用于从1到10000中找出这样的数,'该数各个位的数字的阶乘相加之和等于该数,'并将结果输出。

OptionExplicit

PublicSubfind()

Dimk,a,n,i

DimpAsInteger

Fork=1To10000

a=LTrim(Str(k))

n=0

Fori=1ToLen(a)'----1-----

p=Val(Mid(a,i,1))

n=n+fact(p)'-----2----

Nexti

Ifn=kThenForm1.Printk

Nextk

EndSub

Functionfact(xAsInteger)AsLong'该函数用于计算阶乘

DimyAsLong

Dimi%

y=1

Fori%=1Tox

y=y*i%

Nexti%

fact=y'----3----

EndFunction

'[21]Modify.bas模块中的Combination过程是用于计算m个数据'中取出n个数据的排列组合值,计算公式为Cmn=m!

/(n!

*(m-n)!

)。

'Modify.bas模块中的n过程是产生数据,数据的取值范围为'-10~10之间的随机数。

PublicSubCombination()

DimmAsInteger

DimnAsInteger

DimCmnAsLong

Do

m=Val(InputBox("请输入一个整数m"))

n=Val(InputBox("请输入一个整数n(n<=m)"))

'******错误1******LoopWhilem>=n'必须保证输入的两个数m>=n

LoopWhilem

'******错误2******

Cmn=nFactor(m)/

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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