源代码及答案.docx
《源代码及答案.docx》由会员分享,可在线阅读,更多相关《源代码及答案.docx(159页珍藏版)》请在冰豆网上搜索。
源代码及答案
问题、源代码及答案
问题、源代码及答案
问题、源代码及答案
问题、源代码及答案
程序功能:
求s=1+3+5+7+...直到s>2000为止。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
DimiAsInteger,sAsLong
s=0
i=1
DoUntils<2000‘s>2000
s=s+i
i=i+1‘I=I+2
Loop
Prints
EndSub
答案:
2025
程序功能:
根据整型参数m的值,计算公式t=1-1/(2*2)-1/(3*3)-…-1/(m*m)的值(m=100)。
程序的函数fun()中有一行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
PrintFormat(fun(100),"0.######")
EndSub
PrivateFunctionfun(nAsInteger)AsInteger‘Single
DimtAsSingle
DimiAsInteger
i=2:
t=1
DoWhilei<=n
t=t-1/(i*i)
i=i+1
Loop
fun=t
EndFunction
答案:
0.365016
程序功能:
已知24有8个正整数因子(即:
1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。
求[100,300]之间能被其因子数目整除的数中最大的数。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
DimNAsInteger
DimsAsInteger
DimiAsInteger
ForN=300To100‘step-1
s=0
Fori=1ToN
IfNModi=0Then
s=s+1
EndIf
Nexti
IfsModN=0Then‘NMods=0
PrintN
ExitFor
EndIf
NextN
EndSub
答案:
296
程序功能:
求四位偶数中,各位数字之和是30的倍数的数之和。
程序中有错误,改正错误,使程序能输出正确结果。
PrivateSubCommand1_Click()
Dimx%,a%,b%,c%,d%
Dimnum1&
num1=0
Forx=1000To9999
a=Int(x/1000)
b=Int(x/100)-a*10
c=Int(x/10)-a*100-b*10
d=x-a*1000-b*100-c*10
Ifa+b+c+dMod30=0Then
num1=num1+x
EndIf
Nextx
Printnum1
EndSub
答案:
288840
修改如下:
Forx=1000To9999Step2
a=Fix(x/1000)
b=Fix((x-a*1000)/100)
c=Fix((x-a*1000-b*100)/10)
d=x-a*1000-b*100-c*10
If(a+b+c+d)Mod30=0Then
程序功能:
求s=1+3+5+7+...直到s>3000为止。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
DimiAsInteger,sAsLong
s=0
i=1
DoUntils<3000‘S>3000
s=s+i
i=i+1‘I=I+2
Loop
Prints
EndSub
答案:
3025
程序功能:
根据整型参数m的值,计算公式t=1-1/(2*2)-1/(3*3)-…-1/(m*m)的值(m=123)。
程序的函数fun()中有一行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
PrintFormat(fun(123),"0.######")
EndSub
PrivateFunctionfun(nAsInteger)AsInteger
DimtAsSingle
DimiAsInteger
i=2:
t=1
DoWhilei<=n
t=t-1/(i*i)
i=i+1
Loop
fun=t
EndFunction
答案:
0.363163
改为:
PrivateFunctionfun(nAsInteger)AsSingle
程序功能:
求100~200之间的素数个数,程序中有错误。
改正错误,使它能输出正确的结果。
PrivateSubForm_Click()
Number=0
Forx=101To199Step2
i=2
k=Int(x/2)
DoWhilei<=k
IfxModi=0ThenExitFor‘ExitDo
i=i+1
Loop
IfikThen
Number=Number+1
EndIf
Nextx
PrintNumber
EndSub
答案:
21
程序功能:
求满足以下条件的(a,b,c)的组数:
(1)1/(a^2)+1/(b^2)=1/(c^2);
(2)a>b>c;(3)a+b+c<100。
程序中有错误,改正错误,使程序能输出正确的结果。
PrivateSubCommand1_Click()
Dimc%,b%,a%,s$
s=0
Forc=1To100
Forb=1To100
Fora=1To100
Ifa+b+c<100Or1/(a^2)+1/(b^2)=1/(c^2)Thens=s+1
Nexta,b,c
Prints
EndSub
答案:
2
改为:
Ifa+b+c<100And1/(a^2)+1/(b^2)=1/(c^2)And(a>b)And(b>c)Thens=s+1
程序功能:
计算s=2!
+4!
+8!
。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
DimkAsInteger,iAsInteger
DimsAsLong,tAsLong
s=0
i=1
DoWhilei<=3
t=1
k=1
Whilek<=2*I‘2^i
t=t*k
k=k+1
Wend
s=s+t
i=i+1
Wend‘loop
Prints
EndSub
答案:
40346
程序功能:
根据整型参数m,计算1-123的平方根的倒数之和。
程序的函数fun()中有一行有错误,改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
PrintFormat(fun(123),"#.######")
EndSub
PrivateFunctionfun(mAsInteger)Assingle
y=0
Fori=1Tom
t=1/Sqr(i)
y=y+t
Nexti
fun=t‘fun=y
EndFunction
答案:
20.76577
程序功能:
求sum=d+dd+ddd+……+ddd..d(d为1-9的数字)。
例如,3+33+333+3333(此时d=3,n=4)从键盘上输入d的值为3,n的值为4。
程序中有错误。
改正错误,使它能输出正确的结果。
PrivateSubForm_Click()
DimdAsInteger,nAsInteger,iAsInteger
DimsumAsLong
sum=0
d=Val(InputBox("请输入数值d:
"))
n=Val(InputBox("请输入数值n:
"))
Fori=1Ton
tn=tn+d‘tn=tn*10+d
sum=sun+tn‘sum=sum+tn
Nexti
Printsum
EndSub
答案:
3702
程序功能:
求满足以下条件的(a,b,c)的组数:
(1)1/(a^2)+1/(b^2)=1/(c^2);
(2)a>b>c;(3)a+b+c<50。
程序中有错误,改正错误,使程序能输出正确的结果。
PrivateSubCommand1_Click()
Dimc%,b%,a%,s$
s=0
Forc=1To50
Forb=1To50
Fora=1To50
Ifa+b+c<50Or1/(a^2)+1/(b^2)=1/(c^2)Thens=s+1
Nexta,b,c
Prints
EndSub
答案:
1
改为:
Ifa+b+c<50And1/(a^2)+1/(b^2)=1/(c^2)And(a>b)And(b>c)Thens=s+1
程序功能:
计算s=2!
+4!
+6!
+8!
。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
DimkAsInteger,iAsInteger
DimsAsLong,tAsLong
s=0
i=1
DoWhilei<=3‘I<=4
t=1
k=1
Whilek<=2^I‘k<=2*i
t=t*k
k=k+1
Wend
s=s+t
i=i+1
Wend‘loop
Prints
EndSub
答案:
41066
程序功能:
用公式pi/4=1-1/3+1/5-1/7+…求pi(pi为圆周率)的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。
程序的fun()函数中有一行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
PrintFormat(fun(0.0001),"#.####")
EndSub
PrivateFunctionfun(numAsSingle)AsSingle
pi=1:
t=1:
s=1:
n=1
Do
s=-s
n=n+2
t=s*1/n
pi=pi+t
LoopUntiltpi=pi*4
fun=pi
EndFunction
答案:
3.1418
程序功能:
求水仙花的个数(所谓水仙花数是指一个三位数,该数的各位数字立方之和等于该数本身。
例如153是一个水仙花数,因为1^3+5^3+3^3=153)程序中有错误。
改正错误,使它能输出正确的结果。
OptionExplicit
PrivateSubForm_Click()
DimnumberAsInteger
DimnAsInteger,iAsInteger,jAsInteger,kAsInteger
Forn=100To999
i=n/100‘I=n\100
j=Int(n/10)-i*10‘j=(n-I*100)\10
k=nMod10
If(n=i*i*i+j*j*j+k*k*k)Then
number=numbre+1‘number=number+1
EndIf
Nextn
Printnumber
EndSub
答案:
4
程序功能:
求四位奇数中,所有各位数字之积(积不为0)是60的倍数的数之和。
程序中有错误,改正错误,使程序能输出正确的结果。
PrivateSubCommand1_Click()
Dimx%,a%,b%,c%,d%
Dimnum1&
num1=0
Forx=1001To9999
a=Int(x/1000)
b=Int(x/100)-a*10
c=Int(x/10)-a*100-b*10
d=x-a*1000-b*100-c*10
Ifa*b*c*dMod60=0Then
num1=num1+x
EndIf
Nextx
Printnum1
EndSub
答案:
3456254
Forx=1001To9999step2
a=x\1000
b=(x-a*1000)\100
c=(x-a*1000-b*100)\10
d=x-a*1000-b*100-c*10
Ifa*b*c*dMod60=0Anda*b*c*d<>0Then
程序功能:
求200到400间,能被3整除但不能被7整除的数的个数。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
DimcountAsInteger
DimxAsInteger
count=0
x=200
Whilex<=400
IfxMod3=0OrxMod7<>0Then‘and
count=count+1
EndIf
x=x+1
Loop‘wend
Printcount
EndSub
答案:
57
程序功能:
根据以下公式pi/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+…求pi(pi为圆周率)的值。
当最后一项的值小于0.0005时停止计算。
程序的fun()函数中有一行有错误,改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
Printfun(0.0005)
EndSub
PrivateFunctionfun(epsAsSingle)AsSingle
s=0:
t=1:
n=1
While(t>eps)
s=s+t
t=t*n/(2*n+1)
n=n+1
Wend
fun=s‘fun=2*s
EndFunction
答案:
3.140578
程序功能:
求数列2/1,3/2,5/3,13/8,……的前10项之和。
程序中有错误。
改正错误,使它能输出正确的结果。
PrivateSubForm_Click()
DimiAsInteger,tAsInteger,nAsInteger
DimaAsInteger,bAsInteger
DimsAsSingle
a=2:
b=1:
n=10
Fori=1Ton
s=s+a/b
t=b‘t=a
a=a+b
a=t‘b=t
Nexti
Prints
EndSub
答案:
16.47991
程序功能:
所谓回文数是从左至右与从右至左读起来都是一样的数字,如:
121是一个回文数。
求100~200之间所有回文数之和。
程序中有错误,改正错误,使程序能输出正确的结果。
PrivateSubCommand1_Click()
Dima%,b%,c%,x%,s%
s=0
Forx=100To200
a=x/100‘a=x\100
b=x/10-a*10‘b=(z-a*100)\10
c=x-a*100-b*10
Ifa=cThens=s+x
Next
Prints
EndSub
答案:
1460
程序功能:
求200到500间,能被13整除但不能被17整除的数的个数。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubCommand1_Click()
DimcountAsInteger
DimxAsInteger
count=0
x=200
Whilex<=500
IfxMod13=0OrxMod17<>0Then‘and
count=count+1
EndIf
x=x+1
Loop‘wend
Printcount
EndSub
答案:
21
程序功能:
计算两个数的最小公倍数。
程序中有两行有错误,改正错误,使程序能输出正确结果。
PrivateSubCommand1_Click()
Printfun(248,848)
EndSub
PrivateFunctionfun(u,v)
t=u
DoWhiletModu<>0andtModv<>0
t=t+u
Loop
fun=u
EndFunction
答案:
26288
改为:
DoUntiltModu=0AndtModv=0
t=t+u
Loop
fun=t
程序功能:
猴子第1天摘下若干桃子,当即吃掉一半,又多吃一个,第二天将剩余的部分吃掉一半还多一个;以此类推,到第10天只剩余1个。
问第1天共摘了多少桃子。
程序中有错误。
改正错误,使它能输出正确的结果。
PrivateSubForm_Click()
DimdayAsInteger,sumAsInteger
day=10;sum=1
DoWhileday>0
sum=sum*2
day=day-1
Loop
Printsum
EndSub
答案:
3070
改为:
sum=(sum+1)*2
程序功能:
求100~10000之间每位数字之和等于5的整数的个数。
程序中有错误,改正错误,使程序能输出正确的结果。
PrivateSubCommand1_Click()
Dimk%,i%,i1%,i2%,i3%,i4%
k=0
Fori=100To5000
SelectCasei
Case104To500
i1=Int(i/100)
i2=Int((i-i1*100)/10)
i3=i-i1*100-i2*10
Ifi1+i2+i3=5Thenk=k+1
Case1004To5000
i1=Int(i/1000)
i2=Int((i-i1*1000)/10)
i3=Int((i-i1*1000-i2*100)/10)
i4=i-i1*1000-i2*100-i3*10
Ifi1+i2+i3+i4=5Thenk=k+1
Endcase‘EndSelect
Nexti
Printk
EndSub
答案:
50
改为:
Int全改为Fix答案有误,应为20
程序功能:
求1到400间,同时能被3和7整除的数的个数。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
PrivateSubForm_Click()
DimcountAsInteger
DimxAsInteger
Forx=1To400
ifmod(x,3)=0andmod(x,7)=0then
count=count+1
endif
Nextcount
printcount
EndSub
答案:
19
IfxMod3=0AndxMod7=0Then
Nextx
程序功能:
计算两个数的最小公倍数。
程序中有两行有错误,改正错误,使程序能输出正确结果。
PrivateSubCommand1_Click()
Printfun(482,248)
EndSub
PrivateFunctionfun(u,v)
t=u
DoWhiletModu<>0andtModv<>0
t=t+1
Loop
fun=u
EndFunction
答案:
59768
DoUntiltModu=0AndtModv=0
Fun=t
程序功能:
一个两位数的正整数,如果将其个位数与十位数字对调所生成的数称为其对调数,如28是82的对调数。
现给定一个两位的正整数,请找到另一个两位的整数,使这两个数之和等于它们的各自的对调数之和。
这样的另一个两位数有多少个。
程序中有错误(从键盘输入的两位数为46)改正错误,使它能输出正确的结果。
PrivateSubForm_Click()
DimxAsInteger,yAsInteger,numberasInteger
DimxfAsInteger,yfAsInteger
Number=0
Do
x=Val(InputBox("请输入一个2位正整数:
"))
LoopWhile(x<9)Or