VB程序设计 习题及答案第7章 过程Word下载.docx
《VB程序设计 习题及答案第7章 过程Word下载.docx》由会员分享,可在线阅读,更多相关《VB程序设计 习题及答案第7章 过程Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
![VB程序设计 习题及答案第7章 过程Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/26/0af4fb66-fdc8-4f8c-b8bb-5ec3f987c4e8/0af4fb66-fdc8-4f8c-b8bb-5ec3f987c4e81.gif)
Fori=1Ton
f=f*i
运行结果:
如a、b、c的值分别输入为4、5、6
则程序运行结果如图7-1所示:
7.2编写程序,打印100~200之间的所有素数。
要求:
(1)每行输出5个素数。
(2)利用Function过程判断每个数是否为素数,是返回1,否则返回0。
Print2;
k=1
Fori=3To100
f=prime(i)
Iff=1Then
k=k+1
IfkMod5=0ThenPrintiElsePrinti;
EndIf
PrivateFunctionprime(n)
prime=1
Fori=2Ton-1
IfnModi=0Thenprime=0:
ExitFor
EndFunction
程序运行结果如图7-2所示:
7.3编写程序,利用Function过程计算下式的值:
(1+2+3+…+m)+(1+2+3+…+n)
y=───────────────
(1+2+3+…+p)
m=Val(InputBox("
输入m:
"
))
n=Val(InputBox("
输入n:
p=Val(InputBox("
输入p:
y=(sum(m)+sum(n))/sum(p)
sum="
y
PrivateFunctionsum(n)
s=0
s=s+i
sum=s
如输入m值为:
20,n值为:
15,p值为:
10
则程序运行结果如图7-3所示:
7.4编写Function过程计算n!
调用该函数过程计算下式的值:
S=1+1/(1+4!
)+1/(1+4!
+7!
)+…+1/(1+4!
+…+19!
t=0
Fori=1To19Step3
t=t+fact(i)
s=s+1/t
PrivateFunctionfact(n)
Nexti
fact=f
程序运行结果如图7-4所示。
xx2x3xn
7-5计算ex=1+─+─+─+…+─
1!
2!
3!
n!
xn
设x=1,2,3,4,5,6时,分别打印ex的值,要求精度─<
0.0001
用Function过程计算n!
调用该过程,计算上式的值。
Forx=1To6
Sum=1
t=1
n=0
Do
n=n+1
t=t*x
term=t/fact(n)
Sum=Sum+term
LoopUntilterm<
e^"
x;
"
="
Sum
Nextx
程序运行结果如图7-5所示:
7.6编写两个Function过程,分别计算40,16,34,26,52的最大公约数和最小公倍数。
Dima(1To5)AsInteger
a
(1)=40
a
(2)=16
a(3)=34
a(4)=26
a(5)=52
a1=a
(1)
a2=a
(2)
b=gcd(a1,a2)
d=b
c=a
(1)*a
(2)/b
Fori=3To5
a1=c
a2=a(i)
c=c*a(i)/b
最小公倍数为:
c
d=gcd(d,a(i))
最大公约数为:
d
PrivateFunctiongcd(x,y)
Ifx<
yThen
t=x
x=y
y=t
r=xMody
DoWhiler<
>
0
y=r
r=xMody
Loop
gcd=y
程序运行结果如图7-6所示:
7.7利用Function过程计算下式的值:
cos2x(0>
x)
f(x)=int(6x2-5x+1)(0≤x≤3)
e3-x(3<
调用该Function过程计算f(f(f(a)))+f(f(2+f(b)))的值。
a,b的值由键盘输入。
a=Val(InputBox("
输入a的值:
b=Val(InputBox("
输入b的值:
t=f(f(f(a)))+f(f(2+f(b)))
计算结果:
t
PrivateFunctionf(x)
0Then
f=Cos(2*x)
ElseIfx<
=3Then
f=Int(6*x*x-5*x+1)
Else
f=Exp(3-x)
如a、b的值分别输入为3和5
则程序运行结果如图7-7所示。
7.8编写程序,利用Sub过程计算5×
4的数组中,每行最大元素及其位置和每列最大元素及其位置。
说明:
采用随机函数Rnd产生20个1~20之间的随机整数,存放在数组a中。
Dima(1To5,1To4)AsInteger
RandomizeTimer
Fori=1To5
Forj=1To4
a(i,j)=Int(20*Rnd+1)
PrintFormat(a(i,j),"
@@@@@"
);
Nextj
Print
Callhd(a(),i,m)
第"
i;
行"
最大元素是:
a(i,m);
位置在第"
m;
列"
Callld(a(),j,n)
Print"
j;
a(n,j);
n;
Nextj
PrivateSubhd(x()AsInteger,i,m)
Max=x(i,1)
m=1
Forj=2To4
Ifx(i,j)>
MaxThen
Max=x(i,j)
m=j
PrivateSubld(x()AsInteger,j,n)
Max=x(1,j)
n=1
Fori=2To5
n=i
程序运行结果如图7-8所示:
7.9编写程序,要求该程序在输入某人的编号、实发工资数额后,自动确定发给多少张一百元、五十元、十元、五元、一元、五角、一角、五分、一分的钞票,并输出实发工资总额和所需各种钞票的总数目。
(要求用Sub过程处理除一百元以外的钞票的数目)
num=Val(InputBox("
输入职工编号:
s$=InputBox("
输入职工工资:
l=Len(s$)
s0=Val(Left$(s$,l-5))
Callfenp(l,s$,s1,s2,s3,s4,s5,s6,s7,s8)
职工编号:
num,"
职工工资:
s$
100元"
s0
50元"
s1
10元"
s2
5元"
s3
1元"
s4
5角"
s5
1角"
s6
5分"
s7
1分"
s8
PrivateSubfenp(l,s$,s1,s2,s3,s4,s5,s6,s7,s8)
l1=Val(Mid$(s$,l-4,1))
l2=Val(Mid$(s$,l-3,1))
l3=Val(Mid$(s$,l-1,1))
l4=Val(Mid$(s$,l,1))
s1=l1\5
s2=l1Mod5
s3=l2\5
s4=l2Mod5
s5=l3\5
s6=l3Mod5
s7=l4\5
s8=l4Mod5
程序运行结果如图7-9所示:
(注意:
输入的工资保留到分)
7.10编写程序,把任意一个十进制数N转换成分别用二进制、八进制和十六进制表示的数,要求用Sub过程实现数制的转换。
程序代