VFP编程题参考(2)
Visual FoxPro编程题参考题解
1.编程序求出1-200以内的能被7整除的数的平方和。377986
s=0
for I=1 to 200
if mod(I,7)<>0
loop
endif
s=s+I*I
endfor
?”s=”,s
2.编写程序,求共有几组i、j、k符合算式ijk+kji=1333,其中i、j、k是 0~9之间的一位整数。6
n=0
for I=1 to 9
for j=0 to 9
for k=1 to 9
if (I*100+j*10+k)+(k*100+j*10+i)=1333
n=n+1
endif
endfor
endfor
endfor
?n
3.编程序求1~99的平方根的和并输出结果。(保留小数点两位).661.46
s=0
for I=1 to 99
s=s+sqrt(I)
ednfor
?round(s,2)
4.编写程序,求所有符合算式ij*ji=1300的最小数ij(即i*10+j)。其中i、j是1~9之间的一位整数。25
A=0
for I=1 to 9
for J=1 to 9
if (I*10+J)*(J*10+I)=1300
A=I*10+J
exit
Endif
Endfor
If a<>0
Exit
endif
endfor
?A
5.编程序求出1~100所有整数的平方和并输出结果。338350
s=0
for n=1 to 100
s=s+n**
endfor
?n
6.编写程序,求在四位数的奇数中,所有各位数字之和是25的倍数的数的和。1298515 s=0
for n=1001 to 9999 step 2
a=int(n/1000)
b=int((n-a*1000)/100)
c=int((n-a*1000-b*100)/10)
d=mod(n,10)
w=a+b+c+d
if mod(w,25)=0
s=s+n
endif
endfor
?s
33.编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。110
7.编写程序,求在四位数的偶数中,所有各位数字之和是30的倍数的数的和。288840 s=0
for n=1000 to 9998 step 2
a=int(n/1000)
b=int((n-a*1000)/100)
c=int((n-a*1000-b*100)/10)
d=mod(n,10)
w=a+b+c+d
if mod(w,30)=0
s=s+n
endif
endfor
?s
8.编程序求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500 时程
序退出。550
s=0
for n=1 to 5000
if mod(n,5)=0 .and.mod(n,2)=0
s=s+n
endif
if s>500
exit
endif
endfor
?s
9.已知a>b>c,且a+b+c<100,求满足条件.1/(a^2)+1/(b^2)=1/(c^2的共有多少组。N=0
For a=2 to 100
For b=1 to a
For c=0 to b
If a+b+c>=100
Exit
Endif
If 1/(a^2)+1/(b^2)=1/(c^2)
N=N+1
Endif
Endfor
Endfor
Endfor
?N
set talk on
10.编程序求在3000以内被17或者23整除的正整数数的个数。299
set talk off
clear
n=0
for i=17 to 3000
if mod(i,17)=0 .or. mod(i,23)=0
n=n+1
endif
endfor
?n
11.一个数如果刚好与它所有的因子之和相等,则称该数为一个“完数”,如:6=1+2+3,则6就是一个完数。求出200到500之间所有的完数之和。496
a=0
for i=200 to 500
s=0
for j=1 to i-1
if mod(i,j)=0
s=s+j
endif
endfor
if s=i
a=a+i
endif
endfor
?a
86.一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如, 6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求[1,1000]之间的最大完数。496 12.已知一个数列的前3个数为0,0,1,以后每个数为前3个数的和,编程序求此数列的第36个数。334745777
a1=0
a2=0
a3=1
n=4
do while n<=36
an=a1+a2+a3
t=a2
a2=a3
a1=t
a3=an
n=n+1
enddo
?an
13.编写程序,计算在0至50的范围内有多少个数,其每位数的乘积大于每位数的和。
23
n=0
for i=1to 50
a=int(i/10)
b=mod(i,10)
if a*b>a+b
n=n+1
endif
endfor
?n
29.程序,计算在0至99的范围内有多少个数,其每位数的乘积小于等于每位数的和。
37
14.程序,计算在0至50的范围内有多少个数,其每位数的乘积小于每位数的和.26 程序与13题类似
127.统计[100,10000]之间有多少个这样的整数,其各位数字之和能被7整除。1408 15.用一元纸币兑换一分、两分和五分的硬币,要求兑换硬币的总数为50枚,问共有多少种换法?(注:在兑换中一分、两分或五分的硬币数可以为0枚).13
n=0
for i=0 to 50
for j=0 to 50
for k=0 to 20
if i+2*j+5*k=100 .and.i+j+k=50
n=n+1
endif
endfor
endfor
endfor
?n
16.把18元钱分成一元、二元和五元的纸币且纸币数共为10张的分法有多少种?(注:在兑换中一元、二元、五元的纸币数可以为0)。3
程序与13题类似
17.编写程序,求四位数的奇数中,所有各位数字之积(且不为0)是125的倍数的数的和。161095
s=0
for n=1001 to 9999 step 2
a=int(n/1000)
b=int((n-a*1000)/100)
c=int((n-a*1000-b*100)/10)
d=mod(n,10)
w=a*b*c*d
if mod(w,125)=0 .and.w<>0
s=s+n
endif
endfor
?s
96.设某四位数的各位数字的平方和为100,且该数能被3整除。求共有多少个这样的四位数。.23
64.有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求这种三位数共有多少个? .4
18.所谓回文数是从左至右与从右至左读起来都是一样的数字,如:121是一个回文数。编写程序,求出100—900之间的所有回文数的个数。80
n=0
for i=100 to 900
a=int(i/100)
b=int((i-a*100)/10)
c=mod(i,10)
if a=c
n=n+1
endif
endfor
?n
25.所谓回文数是从左至右或从右至左读起来都是一样的数字,如:121是一个回文数。编写程序,计算从1981年开始到3000年为止,共有多少个年号是回文数年号。11 19.编程序求出100到200之间同时满足除3余2和除5余3条件的数的个数。6
n=0
for I=100 to 200
if mod(I,3)=2 .and. mod(I,5)=3
n=n+1
endif
endfor
?n
20.百钱百鸡问题。用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,雏鸡三只一钱,编程计算共有几种买法(要求每种鸡至少要买1只)。3
n=0
for i=1 to 100
for j=1 to 20
for k=1 to 34
if i/3+j*5+k*3=100 .and.i+j+k=100
n=n+1
endif
endfor
endfor
endfor
?"n=",n
38.有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?.9
101.马克思曾经做过这样一道趣味数学题:有30个人在一家小饭店里用餐,其中有男人、女人和小孩,每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,共花去50先令。如果要求男人、女人和小孩都有人参与,试求有多少种方案分配男人、女人和小孩的人数。9
75.把一张一元钞票,换成一分、二分和五分硬币,每种至少8枚,问有多少种方案?.80 21编程序求出 2+4+8+16+32+…这样的数之和。如果累加数大于500时,则程序终止并输出结果。510
clear
s=0
n=1
do while s<=500
s=s+2^n
n=n+1
enddo
?"s=",s
22.今有5羊4犬3鸡2兔值钱1496,4羊2犬6鸡3兔值钱1175,3羊1犬7鸡5兔
值钱958,2羊3犬5鸡1兔值钱861,求鸡值多少钱?(鸡23.免29.羊177.犬121) clear
s=0
flag=1
for y=1 to 300
for q=1 to 400
for t=1 to 200
j=(1496-5*y-4*q-2*t)/3
if
(4*y+2*q+6*j+3*t)=1175.and.(3*y+q+7*j+5*t)=958.and.(2*y+3*q+5*j+t)=861
flag=0
exit
endif
endfor
if flag=0
exit
endif
endfor
if flag=0
exit
endif
endfor
?"j=",j
23.编程序求出1~100所有整数的立方和并输出结果。25502500
24.“水仙花数”是指这样的数,其各位数字的立方和等于该数本身,如: 153=1^3+5^3+3^3。编写程序求100至400的范围内有多少个水仙花数。3
26.所谓素数是指这样的自然数,除1和它本身外不再有其它因子。编写程序,计算从1981年开始到3000年为止,我们将遇到多少个素数年号。131
27.编写程序,求出9到499之间的所有非偶数非素数的数之和。40965
s=0
n=0
for I=9 to 499 step 2
for j=2 to sqrt(i)
if mod(I,j)=0
s=s+I
n=n+1
exit
endif
endfor
endfor
?”s=”,s
?”n=”,n
28.编写程序,求出3到100之间的所有非偶数非素数的数的个数。25
同上
103 求[500,1999]之间的素数的个数,且要求该素数十位数字为7。22
42.求[666,777]范围内素数的个数。 .16
46.求[444,666]范围内最大的素数是多少? .661
30.编写程序,求在10~1000之间所有能被4除余3,被7除余5,被9除余2的数之和。1700
s=0
for I=10 to 1000
if mod(I,4)=3.and.mod(I,7)=5.and.mod(I,9)=2
s=s+I
endif
endfor
?s
44.求[351,432]之间所有既不能被3整除,又不能被8整除的正整数的个数。 .47 31.编写程序,计算1000以内有多少个这样的数,其个位数为6且该数能被9整除。11 n=0
for I=6 to 1000
if mod(I,10)=6.and.mod(I,9)=0
n=n+1
endif
endfor
?n
51.求[1,5000]之间能同时被3和7整除的数的个数。 .238
99.求[1,1000]之间能被3整除,且至少有一位上的数是5的所有数之和。46509
set talk off
clear
s=0
for i=12 to 999 step 3
do case
case i<=99
a=int(i/10)
b=mod(i,10)
if a=5 .or.b=5
s=s+i
endif
case i<=999
a=int(i/100)
b=int((i-a*100)/10)
c=mod(i,10)
if a=5 .or.b=5 .or.c=5
s=s+i
endif
endcase
endfor
?s
set talk on
32.编写程序,计算1000以内有多少个这样的数,其十位数为6且能被8整除。15 34.编程序求1~85的平方根和并输出结果。(保留小数点两位).526.85
s=0
for I=1 to 85
s=s+sqrt(i)
endfor
?round(s,2)
35.编写程序,求一正整数等差数列的前六项的平方和,该数列的前四项之和是26、之积是880。699(其中a=2,d=3)
*等差数列公式:an=a1+(n-1)d
*前n项之和公式:sn=na1+n*(n-1)*d/2
*由题意得:d=(26-4*a1)/6
s=0
for a=1 to 6
d=(26-4*a)/6
if a*(a+d)*(a+2*d)*(a+3*d)=880
exit
endif
endfor
dimension b(6)
for i=1 to 6
b(i)=a+(i-1)*d
endfor
for i=1 to 6
s=s+b(i)*b(i)
endfor
?"a=",a
?"d=",d
?"s=",s
36.编写程序,统计200~400之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。4
37.(1)求符合下列条件的四位完全平方数(某个数的平方数为完全平方数),它的千位数字与十位数字之和等于百位数字与个位数字之积,例如,3136=56^2, 且3+3=1*6 故3136是所求的四位完全平方数. 求其中最大的一个数。7921
for I=9999 to 1000 step –1
a=int(i/1000)
b=int((I-a*1000)/100)
c=int((I-a*1000-b*100)/10)
d=mod(I,10)
if a+c=b*d.and.sqrt(i)=int(sqrt(i))
?I
exit
endif
endfor
(2)编写程序,统计1000~9999之间的所有满足以下条件的四位数的个数。该四位数是一个完全平方数,其第1位与第3位数字之和为10,第2位与第4位数字之积为12。2 n=0
for I=1000 to 9999
a=int(i/1000)
b=int((I-a*1000)/100)
c=int((I-a*1000-b*100)/10)
d=mod(I,10)
if a+c=10.and.b*d=12.and.sqrt(i)=int(sqrt(i))
n=n+1
endif
endfor
?n
39.已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求[1,100]之间第10个能被其因子数目整除的正整数。56
n=0
for i=1 to 100
k=0
for j=1 to i
if mod(i,j)=0
k=k+1
endif
endfor
if mod(i,k)=0
n=n+1
endif
if n=10
exit
endif
endfor
?i
40.倒勾股数是满足公式: 1/A^2+1/B^2=1/C^2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2。假定A>B>C,求A,B,C小于或等于100的倒勾股数有多少组?.5
n=0
for c=1 to 100
for b=c to 100
for a=b to 100
if (b*b*c*c+a*a*c*c-b*b*a*a=0).and.a>b.and.b>c
?a,b,c
n=n+1
endif
endfor
endfor
endfor
?n