上机程序调试题题目及参考答案.docx

上传人:b****5 文档编号:14637196 上传时间:2023-06-25 格式:DOCX 页数:58 大小:31.71KB
下载 相关 举报
上机程序调试题题目及参考答案.docx_第1页
第1页 / 共58页
上机程序调试题题目及参考答案.docx_第2页
第2页 / 共58页
上机程序调试题题目及参考答案.docx_第3页
第3页 / 共58页
上机程序调试题题目及参考答案.docx_第4页
第4页 / 共58页
上机程序调试题题目及参考答案.docx_第5页
第5页 / 共58页
上机程序调试题题目及参考答案.docx_第6页
第6页 / 共58页
上机程序调试题题目及参考答案.docx_第7页
第7页 / 共58页
上机程序调试题题目及参考答案.docx_第8页
第8页 / 共58页
上机程序调试题题目及参考答案.docx_第9页
第9页 / 共58页
上机程序调试题题目及参考答案.docx_第10页
第10页 / 共58页
上机程序调试题题目及参考答案.docx_第11页
第11页 / 共58页
上机程序调试题题目及参考答案.docx_第12页
第12页 / 共58页
上机程序调试题题目及参考答案.docx_第13页
第13页 / 共58页
上机程序调试题题目及参考答案.docx_第14页
第14页 / 共58页
上机程序调试题题目及参考答案.docx_第15页
第15页 / 共58页
上机程序调试题题目及参考答案.docx_第16页
第16页 / 共58页
上机程序调试题题目及参考答案.docx_第17页
第17页 / 共58页
上机程序调试题题目及参考答案.docx_第18页
第18页 / 共58页
上机程序调试题题目及参考答案.docx_第19页
第19页 / 共58页
上机程序调试题题目及参考答案.docx_第20页
第20页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

上机程序调试题题目及参考答案.docx

《上机程序调试题题目及参考答案.docx》由会员分享,可在线阅读,更多相关《上机程序调试题题目及参考答案.docx(58页珍藏版)》请在冰点文库上搜索。

上机程序调试题题目及参考答案.docx

上机程序调试题题目及参考答案

第二部分VB上机考试模拟试题

一、程序调试题(改错或填空)

(二)程序调试题

[题1]Modify.bas模块中的getanswer过程是用于计算一元二次方程的根,并将结果输出来。

OptionExplicit

PublicSubgetanswer()

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

Dimdalt!

a#,b#,c#

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

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

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

dalt=b*b-4*a*c

If----1----dalt>0then

dalt=Sqr(dalt)

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

Elseif---2----dalt=0then

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

Else

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

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

EndIf

EndSub

[题2]打印输出一菱形图案。

PublicSubprt()

'打印由#组成的菱形图案

'#

'###

'#####

'#######

'#########

'#######

'#####

'###

'#

DimiAsInteger,jAsInteger

DimstartAsString'每行起始空格数

DimcountAsInteger'每行#个数

Fori=1To9

Ifi<=5Then

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

count=2*i-1

Else

start=Space(11+i)

'-------2------count=19-2*i

EndIf

'------3------form1.printstart;

Forj=1Tocount

Form1.Print"#";

Nextj

'------4------form1.print

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='------1------Space(10+i)

num='------2------2*(10-i)-1

EndIf

Form1.Printstart;

Forj=1Tonum

'------3------form1.printtrim(str(i));

Nextj

'------4------form1.print

Nexti

EndSub

[题4]改错。

OptionExplicit

PublicSubprt()

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

'9

'888

'77777

'6666666

'555555555

'44444444444

'3333333333333

'222222222222222

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

DimiAsInteger,jAsInteger

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

Fori=9To1step-1

Form1.PrintSpace(i);

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

Forj=1To2*(10-i)-1

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

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+'-------1------number(i)

Nexti

Form1.Print"s=";s

EndSub

PublicFunctionnumber('---2---nasinteger)AsSingle

DimiAsInteger

number=0

Fori=1Ton

'---3---number=number*10+7number=value(number&7)

Nexti

EndFunction

[题6]Modify.bas模块中的过程eat用于计算猴子共摘了多少个桃子。

OptionExplicit

PublicSubeat()

'该过程是用于计算猴子共摘了多少个桃子。

'(小猴在一天摘了若干个桃子,当天吃掉了一半多一个;

'第二天吃了剩下的一半多一个;

'以后每天都吃尚存的一半零一个,到第7天早上要吃时只剩下一个了),

'并将结果输出来。

Dimn%,i%,x%

x=1

fori=6to---1----1step----2-----1

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

Nexti

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

EndSub

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

PublicSubprime()

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

DimiAsInteger

DimjAsInteger

DimkAsInteger

DimtAsInteger'统计素数的个数

DimbAsBoolean

Fori=100To200

b=True

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

j=Int(Sqr(i))

DoWhilek<=jAndb

IfiModk=0Then

------2------b=false

EndIf

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

Loop

if------4-------bb=truethen

t=t+1

Form1.Printi

EndIf

Nexti

Form1.Print"t=";t

Endsub

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

请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。

PublicSubeven()

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

DimxAsInteger

DimiAsInteger

'--1--dowhilex<4orxmod2<>0dowhilex<4orxmod2=1'保证x是大于4的偶数

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

Loop

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

'------2------ifisprime(i)andisprime(x-i)

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

EndIf

Nexti

EndSub

PublicFunctionIsprime(xAsInteger)AsBoolean

DimiAsInteger

'------3------isprime=true

Fori=2Tox-1

'------4------ifxmodi=0then

Isprime=False

ExitFor

EndIf

Nexti

EndFunction

[题9]Modify.bas模块中的find过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。

OptionExplicit

PublicSubfind()

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

DimcountN%,n%

countN=0

n=1

Do

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

if--2----nmod3=1andnmod5=1andnmod7=1then

Form1.Printn

countN=countN+1

EndIf

Loop----3-----untilcountN=5whilecountN<5

EndSub

[题10]Modify.bas模块中的过程rn通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"今年是闰年",否则打印"今年不是闰年"。

闰年的判断方法是:

凡是年份不能被4整除的都不是闰年,而且如果年份能被100整除但不能被400整除的也不是闰年。

OptionExplicit

PublicSubrn()

'该过程通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"今年是润年"

'否则,打印"今年不是闰年"。

Constyear=2023

If----1----Isleapyear(year)Then

Form1.Print"今年是闰年"

Else

Form1.Print"今年不是闰年"

EndIf

EndSub

FunctionisLeapYear(yAsInteger)AsBoolean

IfyMod4<>0Or(yMod100=0AndyMod400<>0)Then

isLeapYear=False

Else

isLeapYear=True

EndIf

EndFunction

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

请建立工程将Modify.bas模块加入工程中进行调试。

注意:

只要修改标出出错位置的下面那一条语句即可,其余代码不要改动。

'从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分

'输出取法的数量及每一种取法的一分、二分、五分的个数

DimoneAsInteger'一分硬币个数

DimtwoAsInteger'二分硬币个数

DimfiveAsInteger'五分硬币个数

Constn=20'总数20枚

DimkAsInteger'取法数量

k=0

Forone=1Ton

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

Fortwo=one+1Tonfortwo=1ton-one

five=n-one-two

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

Ifone+two+five=60Thenifone+two*2+five*5=60then

k=k+1

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

EndIf

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

Nextonenexttwo

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

Nexttwonextone

Form1.Print"k=";k

EndSub

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

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

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

PublicSubsame()

DimiAsInteger

DimxAsString,x2AsString

Fori=1To1000

x1='------1------'trim(str(i))将i转字符型

x2='------2------'trim(str(i^2))将i^2转字符型

if'------3------x1=right(x2,len(x1))Then

Form1.Printi;"是同构数"

EndIf

Nexti

EndSub

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

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

PublicSubArmstrongNumber()

DimarmstrongAsInteger

DimiAsInteger

DimhundredAsInteger'百位上的数字

DimtenAsInteger'十位上的数字

DimoneAsInteger'个位上的数字

Fori=1To999

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

ten=----2----(imod100)\10i\10mod10

one=----3----(imod100)mod10imod10

If----4----i=hundred^3+ten^3+one^3Then

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

factor'-------1------i,n

Forj=1Ton

s=s+a(j)

Nextj

'-------2------ifi=sthen

Form1.Printi

EndIf

Nexti

EndSub

PublicSubfactor(ByValxAsInteger,ByRefkAsInteger)

DimiAsInteger

a

(1)=1

k=1

'------3------fori=2tox/2fori=2tox-1

IfxModi=0Then

k=k+1

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

EndIf

Nexti

EndSub

[题15]Modify.bas模块中的Summary过程是用于计算并打印出s=1+2+2^2+2^3+……,直至s超过1E+16。

OptionExplicit

PublicSubsummary()

'该过程是用于计算s=1+2+2^2+2^3+……,直至s超过1E+16

DimsAsSingle

DimiAsInteger

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

i=1

------2------dowhiles<=1E+16

s=s+2^i

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

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

while----1----s<1000

s1=s

s=s+(n+1)*p

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

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

Wend

n=----4-----n-1

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

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

f=1

'------2------fori=2to19

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

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

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*******

DimkAsIntegerdimkassingle

DimsAsSingle

s=0

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

Fori=1To100fori=1to100step2

k=1/i

s=s+k

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

k=1/i+1k=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

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

Fori=1Ton

temp=temp*i

Nexti

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

EndFunction

PublicSubsummary()

DimsumAsDouble

DimiAsInteger

DimnAsInteger

n=20

Fori=1Ton

sum=sum+----3----nfactor(i)

Nexti

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

EndSub

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

其中阶乘由fact函数计算。

OptionExplicit

PublicSubfind()

'该过程是用于从1到10000中找出这样的数,

'该数各个位的数字的阶乘相加之和等于该数,并将结果输出。

Dimk,a,n,i

DimpAsInteger

Fork=1To10000

a=LTrim(Str(k))

n=0

Fori=----1-----1tolen(a)

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

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

Nexti

Ifn=kThenform1.Printk

Nextk

EndSub

Functionfact(xAsInteger)AsLong

'该函数用于计算阶乘

DimyAsLong

Dimi%

y=1

Fori%=1Tox

y=y*

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2