VB程序调试题文档格式.docx
《VB程序调试题文档格式.docx》由会员分享,可在线阅读,更多相关《VB程序调试题文档格式.docx(59页珍藏版)》请在冰豆网上搜索。
打印由#组成的菱形图案
#
###
#####
#######
#########
DimiAsInteger,jAsInteger
DimstartAsString'
每行起始空格数
DimcountAsInteger'
每行#个数
Fori=1To9
Ifi<
=5Then
------1------
count=2*i-1
start=Space(11+i)
-------2------
------3------
Forj=1Tocount
Form1.Print"
#"
;
Nextj
------4------
Nexti
[题3]过程pyramid用以打印一个数字金字塔,请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。
1.start=space(10+i)2.num=19-2*i3.Form1.PrintTrim(Str(i));
OptionExplicit
PublicSubpyramid()
打印数字金字塔
1
222
33333
4444444
555555555
6666666
77777
888
9
DimiAsInteger
DimjAsInteger
DimnumAsInteger'
每行数字个数
start=Space(20-i)
num=2*i-1
start='
num='
------2------
Form1.Printstart;
Forj=1Tonum
[题4]改错。
1.Fori=9To1step–12.Forj=1to2*(10-i)-13.Form1.PrintTtrim(Str(i));
打印由数字组成的如下所示金字塔图案
44444444444
3333333333333
222222222222222
111111*********11
DimiAsInteger,jAsInteger
******错误1******
Fori=9To1
Form1.PrintSpace(i);
******错误2******
Forj=1To2*i-1
******错误3******
Form1.Printi
Form1.Print
[题5]计算s=7+77+777+……+(n个7组成的数)。
1.number(i)2.nasinteger3.number=number*10+7
PublicSubtotal()
计算s=7+77+777+……+(n个7组成的数)
Constn=20
DimsAsSingle
Fori=1Ton
s=s+'
-------1------
s="
s
PublicFunctionnumber('
------2-------)AsSingle
number=0
EndFunction
[题6]Modify.bas模块中的过程eat用于计算猴子共摘了多少个桃子。
1.12.–13.x=(x+1)*2
PublicSubeat()
该过程是用于计算猴子共摘了多少个桃子。
(小猴在一天摘了若干个桃子,当天吃掉了一半多一个;
第二天吃了剩下的一半多一个;
以后每天都吃尚存的一半零一个,到第7天早上要吃时只剩下一个了),
并将结果输出来。
Dimn%,i%,x%
x=1
fori=6to---1----step----2----
-----3----
共有"
x;
"
个桃子"
[题7]Modify.bas模块中的Prime过程是求出100到200之间所有的素数,并打印出来。
1.k=22.b=false3.k=k+14.b
PublicSubprime()
打印出100到200之间所有的素数,并统计素数的个数
DimkAsInteger
DimtAsInteger'
统计素数的个数
DimbAsBoolean
Fori=100To200
b=True
------1-------
j=Int(Sqr(i))
DoWhilek<
=jAndb
IfiModk=0Then
------2------
------3------
Loop
if------4-------then
t=t+1
Form1.Print"
t="
t
Endsub
[题8]过程even用以验证一个偶数可以分解为两个素数之和;
Isprime用以判断x是否是素数。
1.DoWhilex<
=4orxmod2<
>
02.Ifisprime(i)andisprime(x-i)
3.isprime=true4.ifxmodi=0then
PublicSubeven()
从键盘输入一个大于4的偶数,将它所有的不重复的分解式求出
DimxAsInteger
------1------'
保证x是大于4的偶数
x=Val(InputBox("
x="
))
Fori=3Tox/2Step2'
在不大于x的奇数中找素数
Form1.Printx;
="
i;
+"
x-i
PublicFunctionIsprime(xAsInteger)AsBoolean
Fori=2Tox-1
Isprime=False
ExitFor
[题9]Modify.bas模块中的find过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。
1.n+12.nmod3=1andnmod5=1andnmod7=13.WhilecountN<
5
PublicSubfind()
该过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。
DimcountN%,n%
countN=0
n=1
Do
n=----1----
if-----2----then
Form1.Printn
countN=countN+1
Loop----3-----
[题10]Modify.bas模块中的过程rn通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"
今年是闰年"
否则打印"
今年不是闰年"
。
闰年的判断方法是:
凡是年份不能被4整除的都不是闰年,而且如果年份能被100整除但不能被400整除的也不是闰年。
1.isleapyear(year)2.ymod4<
03.ymod100=04.ymod400<
PublicSubrn()
该过程通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"
今年是润年"
否则,打印"
Constyear=2023
If----1----Then
EndSub
FunctionisLeapYear(yAsInteger)AsBoolean
If----2----Or(----3----And----4----)Then
isLeapYear=False
isLeapYear=True
[题11]Modify.bas模块中的CountTo60过程是用于从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分,要求输出取法的数量及每一种取法的一分、二分、五分的个数。
请建立工程将Modify.bas模块加入工程中进行调试。
注意:
只要修改标出出错位置的下面那一条语句即可,其余代码不要改动。
1.Fortwo=1Ton-one2.Ifone+two*2+five*5=60Then3.Nexttwo4.Nextone
从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分
输出取法的数量及每一种取法的一分、二分、五分的个数
DimoneAsInteger'
一分硬币个数
DimtwoAsInteger'
二分硬币个数
DimfiveAsInteger'
五分硬币个数
Constn=20'
总数20枚
DimkAsInteger'
取法数量
k=0
Forone=1Ton
*******错误1********
Fortwo=one+1Ton
five=n-one-two
*******错误2*********
Ifone+two+five=60Then
k=k+1
one="
one;
two="
two;
five="
five
*******错误3********
Nextone
******错误4******
Nexttwo
k="
k
[题12]过程same用以找出1—100之间所有的同构数。
所谓同构数是指一个数出现在它的平方数的右端,如25在25平方625的右端,则25为同构数。
利用数字转字符再取出右端字符的方法进行判断。
1.Trim(Str(i))2.Trim(Str(i^2))3.x1=Right(x2,Len(x1))
PublicSubsame()
DimxAsString,x2AsString
Fori=1To1000
x1='
将i转字符型
x2='
------2------'
将i^2转字符型
if'
------3------Then
Form1.Printi;
是同构数"
[题13]Modify.bas模块中的ArmstrongNumber过程是用于求出1—999之间所有的Armstrong数,并打印出来。
所谓Armstrong数是指一个数等于它每位上数字的立方和。
1.i\1002.(Imod100)\103.(imod100)mod104.i=hundred^3+ten^3+one^3
PublicSubArmstrongNumber()
DimarmstrongAsInteger
DimhundredAsInteger'
百位上的数字
DimtenAsInteger'
十位上的数字
个位上的数字
Fori=1To999
hundred=----1----
ten=----2----
one=----3----
If----4----Then
isarmstrongnumber"
[题14]过程cloze用以求1~1000中的所有完数。
所谓完数是指一个数的所有因子之和等于其自身。
请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。
1.factori,n2.Ifi=sthen3.fori=2tox-14.a(k)=i
Dima(50)AsInteger'
存放每个数分解出来的因子
PublicSubcloze()
求1--100中的所有完数
DimnAsInteger'
因子个数
DimsAsInteger'
因子和
n=0
s=0
factor'
Forj=1Ton
s=s+a(j)
PublicSubfactor(ByValxAsInteger,ByRefkAsInteger)
a
(1)=1
k=1
IfxModi=0Then
[题15]Modify.bas模块中的Summary过程是用于计算并打印出s=1+2+2^2+2^3+……,直至s超过1E+16。
1.s=12.DoWhiles<
=1E+163.i=i+1
PublicSubsummary()
'
该过程是用于计算s=1+2+2^2+2^3+……,直至s超过1E+16
------1------
i=1
------2------
s=s+2^i
------3------
[题16]Modify.bas模块中的qiuN过程是用于求出满足不等式1+2x+3x^2+4x^3+…+(n+1)x^n<
1000的最大n值。
其中x是大于等于1的实数,其值由键盘输入。
PublicSubqiuN()
该过程是用于求出满足不等式1+2x+3x^2+4x^3+…+(n+1)x^n<
1000的最大n值,
DimxAsSingle,sAsSingle,nAsInteger,s1AsSingle,pAsSingle
s=1:
p=x
while----1----
s1=s
s=s+(n+1)*p
p=p*----2----
n=----3----
Wend
n=----4-----
form1.Print"
TheMaxismofn"
n,"
s1
[题17]sum过程用于计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20),请在横线上填入必要的内容。
1.sign=-12.Fori=2To193.sign=-sign
PublicSubsum()
DimfAsSingle
DimsignAsInteger
f=1
f=f+sign/(i*(i+1))
f="
f
[题18]Modify.bas模块中的JiSuan过程是用于计算1-(1/2)+(1/3)-……+(1/99)-(1/100)的值并打印出来。
1.Dimkassingle2.Fori=1To100Step23.k=-1/(i+1)
PublicSubJiSuan()
计算1-(1/2)+(1/3)-...+(1/99)-(1/100)的值并打印出来
******错误1*******
*******错误2*******
Fori=1To100
k=1/i
s=s+k
*******错误3*******
k=1/i+1
[题19]Modify.bas模块中的summary过程是用于计算1!
+2!
+…+20!
,并打印出计算结果,但不完整,请在横线上填入必要的内容,使其完整。
Modify.bas模块中的nFaction函数过程用于计算n!
1.temp=12.temp3.nfactor(i)4.sum
PublicFunctionnFactor(ByValnAsInteger)AsDouble
DimtempAsDouble
----1----
temp=temp*i
nFactor=----2----
DimsumAsDouble
DimnAsInteger
n=20
sum=sum+----3----
sum="
&
----4----
[题20]Modify.bas模块中的find过程是用于从1到10000中找出这样的数,该数各个位的数字的阶乘相加之和等于该数,并将结果输出。
其中阶乘由fact函数计算。
1.1toLen(a)2.n+fact(p)3.fact=y
该过程是用于从1到10000中找出这样的数,
该数各个位的数字的阶乘相加之和等于该数,并将结果输出。
Dimk,a,n,i
DimpAsInteger
Fork=1To10000
a=LTrim(Str(k))
Fori=----1-----
p=Val(Mid(a,i,1))
n=-----2----
Ifn=kThenform1.Printk
Nextk