计算机二级考试程序设计题目精选

更新时间:2023-10-24 06:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1题:100个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元,每3个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生为0的解)? 程序: main( ) { int a,b,c;

for(a=1;a<=20;a++) for(b=1;b<=33;b++) { c=100—a—b;

if((20*a+33*b+c/3)= =100) printf(“%d,%d,%d\\n”,a,b,c); }

getch( ); }

答案:6种:

3,20,77; 4,18,78; 8,11,81; 11,6,83; 12,4,84.

2题:50个小学生按1至50序号顺时针围成一圈,做出局游戏,老师站在圈外逆时针从最后一个人数起,每数到5时,这人从圈里出来,继续数1,2,3,4,5,数到第5个学生时,他就出局,已出局的位置不再参加记数,直至所有的学生出局为止,问最后一个出局的学生序号是多少号? 程序:main() {

int i,k,sum,l,t=0; int a[50]; clrscr();

for(i=1;i<=50;i++) a[i]=1;

for(k=1,sum=0,l=0;k<=50;k++) {

for(i=50;i>0;i--) { sum+=a[i]; if(sum==5) {sum=0;l++;a[i]=0;} if(l==49) {t=1;break;} } if(t==1)break; }

for(i=1;i<=50;i++){

if(a[i]==1) printf(\ getch(); }

答案:32号

3题:50元兑换成5元,2元和1元的计算方法有多少种? 程序: main( )

{ int x,f,t,n; x=0;f=0;

while(f<=10)

{t=0;while (t<=25)

{n=50—f*5—T*2; if(n>=o) x++; t++:} f++;}

printf(“%d”,x); }

答案:146 4题:

A、B、C三个正整数,当满足1/A*A+1/B*B=1/C*C关系时,称为倒勾股数。求职130〈 A+B+C〈150的倒勾股数有多少组。 程序: main() {

int a,b,c,k; int count=0; clrscr();

for(a=1;a<150;a++) for(b=1;b<150;b++) for(c=1;c<150;c++) {

k=a+b+c;

if((float)1/(a*a)+(float)1/(b*b)==(float)1/(c*c))

if(k>130) if(k<150)

1 1

count++; }

printf(\getch(); }

答案:0 题目: 5题: S1=1,S2=1+3,S3=1+3+5,S4=1+3+5+7,……,SN=1+3+5+7+……+(2N-1),N为正整数。编程求S1+S2+S3+S4+……+SN的值〈 20000时的N的最大值。 程序:

func(int n) {

int i,sum; sum=0;

for(i=1;i<=n;i++) sum=sum+2*i-1; return(sum); }

main() {

int sum,a,b,c,i; i=1; sum=0; clrscr();

while(sum<20000) {

sum=sum+func(i); if(sum>20000) break; i++; }

printf(\getch(); }

答案:38 题目:

6题:自然数对是指两个自然数的和与差都是平方数,如果8和17的和8+17=25与其差17-8=9都是平方数,则称8和17是自然数对(8,17)。假定(A,B)与(B,A)是同一个自然数对且假定A 〉=B,求

所有小于或等于100(即:A〈=100,B〈=100〉的自然数对中B之和。 程序: main() {

int a,b,i,j; int c=0; clrscr();

for(a=1;a<=100;a++) for(b=1;b<=100;b++) {

if((i*i)= =(a+b)&&(j*j)= =(a-b)&&(a>=b)) c=c+b; }

printf(\getch(); }

答案:1440

7题: 把18元钱分成1元、2元禾元的纸币且纸币数共为10张的分法有多少种(注:在兑换中1元、2元、5元的纸币数可以为0)? 解:main() {int a,b,c,n; n=0;

for(a=0;a<=18;a++) for(b=0;b<=9;b++) for(c=0;c<=3;c++)

if(a+b+c==10&&a+2*b+5*c==18) n++;

printf(“%d”,n); }

结果:3

8题:把一张1元钞票,换成1分、2分和5分硬币,每种至少11枚,问有多少种方法? 解:main() {int x,y,z,n; n=0;

for(x=11;x<=33;x++) for(y=11;y<=22;y++) for(z=11;z<=15;z++) if(x+2*y+5*z==100) n++;

- 2 -

- 2

printf(“%d”,n); }

结果:13

9题:找满足以下条件:X^2+Y^2+Z^2=25^2且X+Y+Z之值最大的三个正整数X,Y,Z,求X+Y+Z之值。 程序:

# include main( )

{ int x, y, z, ssum, max=0; for( x=1; x<=24; x++) for( y=1; y<=24; y++) for( z=1; z<=24; z++) if( x*x+y*y+z*z==25*25) { sum=x+y+z;

if(max

答案:43

10题:编程求区间[500,2500]中按递增顺序第25个素数。 程序: main() { int x,y,t,n; n=0; for(x=500;x<=2500;x++) { t=0; for(y=2;y<=x/2;y++) if(x%y= =0)t=1; if(t= =0)n++

}

if(n>=25) break; printf(“x=%d”,x);

getch; }

Key:659

11题:编程求取:[121,140]之间的弦数的个数(若某正数的平方等于另两个正整数平方之各,则称该数为弦数。例如:3^2+4^2=5^2,因此5是弦数)。 程序: main() { int x,y,z,n; n=0; for(x=121;x<=140;x++) for(y=121;y<=140;y++) for(z=121;z<=140;z++) {

if(x*x= =y*y+z*z)

n++; } printf(“n=%d”,n); getch(); }

Key:n=0

12题:编程求取:S=1/2+2/3+3/5+5/8+……的前30项的和(注:该级数从第二项开始,其分子是前一项的分母,其分母是前一项的分子与分母的和)。要求:按四舍五入的方式精确到小数点后第二位。 程序: main() { int a,b,c,n,s; for(n=1;n<=30;n++) { s=s+a/b; c=a;b=b+a;b=c;

} printf(“s=%f”,s); getch(); }

Key:18.46; 13题:

编程求取:从6开始的前6 个同构数的各(若某数与本身平方数的低位部分分别相等,则称之为同构数,如6,其平方数为36,则6为一个同构数)。 程序: main() {

long n,m,k,s,sum; sum=0; m=0;

for(n=6;;n++) {

- 3 -

- 3

if(n<10)k=10;

else if(n<100)k=100;

else if (n<1000)k=1000; else k=10000; s=n*n; s=s – n; if(s%k==0) {

sum+=n; m++; }

if(m<5) break; }

printf(“%ld”,sum); getch();

}

答案:10484。 14题:

编程序求1~108所有整数的平方和并输出结果。 程序: main() {

long n,sum; sum=0;

for(n=1;n<=108;n++) sum+=n*n;

printf(“1^2+2^2+3^2+…+108^2=%ld”,sum); getch(); }

答案:435754。 15题:

编程序求1~115的平方根的和并输出结果(保留小数点两位)。 程序:

#include “math.h” main() {

int n;

double sum; sum=0.0;

for(n=1;n<=115;n++) sum+=sqrt(n);

printf(“This sum is :%.2f”,sum); getch(); }

答案:827.32

16.题:编程序求1~600能被11整除的个数。 程序:main( )

{

int a,n; n=0;

for (a=1;a<=600;a++) if (a==0) n++; printf (“n=%d\\n”,n); getch( ); } 答案:n=54

17题:编程序求1+3+5+7+9+…这样的数的和。如果累加数大于1000是, 则程序终止并输出结果。 程序:main( )

{

int i=1,sum=0;

while (sum<=1000) {

sum=sum+(2*i-1); i++; }

printf (“sum=%d\\n”,sum); getch( ); }

答案:sum=1024

18题:编程序求出100到200之间同时满足除3余2和除5余3条件的数的个数。 程序:main( )

{

int a,n; n=0;

for (a=100;a<=200;a++) if (a%3==2&&a%5==3) n++; printf (“n=%d\\n”,n); getch( ); }

答案:n=6

19题:编程求出1~100以内能被3整除的数的平方和。 程序: main( ) {

- 4 -

- 4

int n,m; long s=0;

for(n=1;n<=100;n++) {

if(n%3==0) m=n*n; else m=0; s=s+m; }

printf(“s=%d”,s); getch( ); }

答案:112761

20题:编程求出1~6000以内能被3或被5整除数的个数。 程序: main( ) {

int x;

int a=0,b=0,c=0,d; for(x=1;x<=6000;x++) {

if(x%3==0) a++;

if(x%5==0) b++;

if(x%3==0&&x%5==0) c++; {

d=a+b-c; } }

printf(“d=%d”,d); getch(); }

答案:2800

21题:编程求出1~300之间同时满足除3余2和除5余3条件的个数。 程序: main( ) {

int x; int a=0;

for (x=1;x<=300;x++) {

if(x%3==2&&x%5==3) a++; }

printf(“a=%d”,a); getch();; }

答案:20

22题:编程序求出S=1~130所有整数的立方和并输出结果。 程序: main() {

unsigned long int a,j,sum=0; for(a=1;a<=130;a++) {

j=a*a*a; sum=sum+j; }

printf(“%lu\\n”,sum); getch(); }

输出结果:77505255

23题:编程序求在3000以内被17或者23整除的正整数数的个数。 程序: main() {

int a,sum=0;

for(a=1;a<=3000;a++) {

if(a==0||a#==0) sum++; }

printf(“%d\\n”,sum); getch(); }

输出结果:299

24题:编写程序,计算1000以内有多少个这样的数,该数既能被6整除又能被8整除。 程序: main() {

- 5 -

- 5

int a,sum=0;

for(a=1;a<=1000;a++) {

if(a%6==0&&a%8==0) sum++; }

printf(“%d\\n”,sum); getch(); }

输出结果:41

25题:编写程序,计算1000以内有多少个这样的数,其十位是6且能被8整除。 程序: main() {

int a,b,k,n; n=0;

for(k=0;k<=1000;k++) {a=k/100;

if((k-a*100)/10==6&&k%8==0) n=n+1;}

printf(\}

答案:15

26题:编写程序,计算在0至50的范围内有多少个娄和,其每位数的乘积大于每位的和。 程序: main() {

int a,b,k,n; n=0;

for(k=0;k<=1000;k++) {a=k/100;

if((k-a*100)/10==6&&k%8==0) n=n+1;}

printf(\}

答案:23 27题:

编写程序,求共有几组 i,j,k符合算式ijk+kji=1534,其中 i,j,k是[0,9]之间的一个整数。 #include main() {

int i,j,k,n=0;

for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=1;k<=9;k++)

if(101*i+20*j+101*k==1534) n++; printf(“n=%d”,n); }

答案:n=5

28题:编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是11的倍数,且A=B+C,即第二位数加上第三位数等于第一位数。 #include main() {

int i,j,k,l,n=0; for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) for(l=0;l<=9;l++)

if((1000*i+100*j+10*k+l)==0&&j+k==i) n++;

printf(“n=%d”,n); }

答案:n=49

29题:编写程序,求四位数的奇数中,每位数字之和是15的倍数的数的和。 程序:main()

{ int a,b,c,d,e,f,m;

long sum=0;

for(m=1000;m<10000;m=m+2) { d=m;

e=(m-d)/10; c=e; f=(e-c)/10; b=f;

a=((f-b)/10);

if((a+b+c+d)= =0) sum=sum+m; }

printf(“sum=%d”,sum); getch();

- 6 -

- 6

}

答案:1533459

30题:编写程序,求四位数的奇数中,所有各位数字之积(且不为0)是125的倍数的数的和。 程序:main()

{ int a,b,c,d,e,f,m; long sum=0;

for(m=1000;m<10000;m=m+2) { d=m; e=(m-d)/10;

c=e; f=(e-c)/10; b=f;

a=((f-b)/10);

if(a*b*c*d!=0&&(a*b*c*d)5=

=0)

sum=sum+m;

}

printf(“sum=%d”,sum); getch(); }

答案:161095

31题:编写程序,求所有符合算式ij*ji=1300d 最大数ij (既i*10+j)。其中i,j是1~9之间的一位整数。

程序 main() { int I=1,j=1;

for(I=1;I<=9;I++) for(j=1;j<=9;j++)

{if((I*10+j)*(j*10+i)==1300&&I>j) printf(“%d\\n”,(I*10+j)); }

getch(); }

答案( 52)

32题:编写程序,求一正整数等差数列的前6项的和,该数列前4项之和是26,4项之积是880。 程序main()

{int x=1,y=-4;

for(x=1;x<10;x++) for(y=-4;y<4;y++)

{if((x*4+6*y)==24&&x*(x+y)*(x+2*y)*

(x+3*y)==880)

printf(“%d\\n”,(x*6+15*y));

}getch();

}

答案(57)

33题:编写程序,求一正整数等差数列的前3项的平方和,该数列的前4项之和是26 ,4项之积是880。 程序main()

{int x=1,y=-4;

for(x=1;x<10;x++) for(y=-4;y<4;y++)

{if(x*4+6*y==24&&x*(x*+y)*(x+2*y)*(

x+3*y)==880)

printf(“%d\\n”,(x*x+(x+2*y)*(2*y+x)*(y+x)*(y+x)));

}getch(); }

答案(93)

34题:编写程序,求在100~1000之间所有能被4除余2,被7除余3,被9除余5的数之和。 main() {

int a,i,sum=0;

for(a=10;a<=1000;a++)

if(a%4==2&&a%7==3&&a%9==5) sum=sum+a;

printf(\}

答案:sum=2000

35题:编写程序,求在四位数的偶数中,所有各位数字之和是30倍数的数的和。 程序: main() {

int i,j,k,l,m,s; s=0;

for(m=1000;m<10000;m++)

{i=m/1000;j=(m00)/100;k=(m0)/10;l=m;

if(m%2==0&&(i*j*k*l)==0) s=s+m; }

printf(\}

答案:26696

- 7 -

- 7

36题:编写程序,求在四位数的的偶数中,所有各位数字之积(且不为0)是18的倍数的数的和。 程序: main() {

int i,j,k,l,m,s; s=0;

for(m=1000;m<10000;m++)

{i=m/1000;j=(m00)/100;k=(m0)/10;l=m;

if(m%2==0&&(i*j*k*l)==0) s=s+m; }

printf(\}

答案:15284

37题:求四位的奇数中,所有各位数之和是25倍数的数的和; main() { int a; long b=0;

for(a=1001;a<=9999;a+=2)

if(a/1000+a/100+a/10+a==25) b=b+a;

printf(\}

答案是1298515

38题:统计1000到9999之间的所有足以下条件的四为数的个数。该数是一完全平方数,第1,第2位数之和是10,第3,第4位数之积为18。 Main()

{int a,b,c=0;

for(a=1000;a<=9999;a++) for(b=33;b<=100;b++)

if(a+a/10= =10&&a/100*a/1000= =18&&b*b= =a) c=c+1;

printf(“c=%d|n”,c); }

答案是:0

39题:篇写程序,统计200~400之间的所有满足三个数字之积42,三个数字之和为12的数的个数。 程序: main() {int I,j,k,m,n; m=0;

for(n=200;n<=400;n++)

{I=n/100;j=(n/10);k=n;

if(I+j+k==12&&I*j*k==42) m++; }

pintf(“%d”,m); }

结果:4

40题:程序,统计1000~9999之间的所有满足以下条件的四位数个数。该四位数是一个完全平方数,其第1,第3位数字之和为6,第2第4位数之积为24。 程序: main{}

{int I,j,k,L; long m,n,p; m=0;

for(n=1000;n<10000;n++) for(p=33;p<100;p++)

{I=n/1000;j=(n/100);k=(n/10);L=n; if(I+k==6&&j*L==24&&p*p==m) m++; }

printf(“%d\\n”,m); }

结果:1

41题:当k 值为20时,求s 的值.

(1^2/(1*3))*(4^2/(3*5))*(6^2/(5*7))…*(2k)^2/((2k-1)(2k+1))(按四舍五入的方式精确到小数点后面第四位)。 程序如下: main( ) {float s; int m;

s=1.0/(1.0*3);

for(m= 2;m<=20;m++)

s=s*4*m*m/((2*m-1)*(2*m+1)) printf(“s=%8.3f”,s); }

运行结果: 0. 388

42题:当m 的值为50时,计算下列公式之值:1-1/2-1/3-1/4-┄-1/m(求按四舍五入的方式精确到小数点后面第四位)。

- 8 -

- 8

程序如下: makn( ) {float t; int K; t=1.0;

for (K=2;K<=50;K++) t=t–1.0/K;

prkntf(“%8.4f”,t); }

运行结果:–2.4992

43题:求m的值为50时,计算下列公式之值: t=1+1/(2^2)+1/(3^2)+……+1/(m^2).( 按四舍五入的方式精确到小数点后面第四位 ) 程序: main() {

int i;

float x,y;

for(i=1;i<=50;i++) {

x=1/(float)(i*i); y+=x;

}

printf(“y=%f”,y); }

答案:1.6251

44题:当n=20时,求

s=1+(1+2^0.5)+(1+2^0.5+3^0.5)+………+(1+2^0.5+3^0.5+……+n^0.5)的值。要求:按四舍五入的方式精确到小数点后第二位。 #include”math.h” main() {int i,n; float t,s; t=0;s=0;

scanf(“%d”,&n); for(i=1;i<=n;i++) { t+=sqrt(i); s+=t; }

printf(“s=%.2f”,s); }

运行结果:s=534.19 45题:当 n=100 时,计算输出下列多项式的值。 S=(1-1/2)+(1/3-1/4)+……+(1/(2n-1)-2n) 按四舍五入的方法精确到小数点后面第三位。 程序:

main() {

int i;

float x,y;

for(i=1;i<=100;i++) {

x=(1/(float)(2*i-1))-(1/(float)(2*i));

y+=x; }

printf(“y=% f”,y); }

答案:0.691

46题:当n=50时,求下列级数和:s=1/(1*2)+1/(2*3)+……+1/(n*(n+1))要求:按四舍五入的方式精确到小数点后第四位。

Main() {int i,n; float s=0;

scanf(“%d”,&n); for(i=1;i<=n;i++) s+=1.0/(i*(i+1.0)); printf(“s=%.4f”,s); }

运行结果:s=0.9804

47题:当N的值为25时,计算下列公式的值。S=1+1/1!+1/2!+1/3!+···+1/n!要求:按四舍五入的方式精确到小数点后第四位 double mi(int n) {float p=1;int k; for(k=1;k<=n;k++) p=p*k;

return p;} main()

{int i;float s=1; for(i=1;i<=25;i++) s=s+1/mi(i);

printf(\}

- 9 -

- 9

结果:2.7183

48题:当N的值为50时,求S 的值S=1+1/(1+2)+1/(1+2+3)+···+1/(1+2+3+···+N)要求:按四舍五入的方式精确到小数点后第四位 he(int m)

{int i;int p=0; for(i=1;i<=m;i++) p=p+i;

return (p); }

main(); float s=0; for(n=1;n<=50;n++) s=s+1.0/he(n); printf(\}

结果:1.9608

49题:倒勾股数是满足公式:

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,求满足倒勾股数公式的A,B,C之和的最大值是多少? Main()

{int A,B,C,S;

for(A=1;A<=100;A++) for(B=1;B<=100;B++) for(C=1;C<=100;C++)

if(A>B>C&&1/(A*A)+1/(B*B)=1/(C*C)) {S=A+B+C;printf(“%d\\n”,S);} }

答案是235

50题:德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数的和。但有些偶数可以分解成多种素数对的和,如:10=3+7,10=5+5,即10可以分解成两种不同的素数对。试求12346可以分解成多少种不同素数对(注A+B与B+A认为是相同素数对)。 Main()

{int a,b,c,d,n=0;

for(a=1;a<=12345;a++) for(b=1;b<=12345;b++) for(c=2;c

if(a%c!=0&&b%d!=0&&a+b==123456&&a>=b) n++;printf(“%d”,n); }

答案是:124

51题:斐波那契数列的前两项是1,1,其后每一项都是前面两项之和,求:10000000以内最大的斐波那契数? 程序:

#include main()

{long int m,n,sum,q=1;

for(m=1,n=1;q<10000000;q++) {sum=m+n;

if(sum>10000000) break; n=m; m=sum; }

printf(“%ld\\n”,m); }

结果:9227465

52题:分子分母为正整数,分子小于分母且分子分母无公因数的分数为最简真分数。对于分数的取值范围为[50,90]时的最简真分数共有多少个? 程序: main()

{int j,b,q,h=40,flag; for(j=50;j<=90;j++) for(b=2;b

flag=0;

for(q=2;q<=b;q++) if(b%q==0 && j%q==0) flag=1; if(flag==0) {

h++; } }

printf(\}

结果:1725

53题:猴吃桃:有一天小猴子摘下若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第10

- 10 -

- 1

天早上小猴子再去吃桃子时,看到只剩一个桃子了。问小猴子第一天共摘下了多少个桃子? 程序 main( ) {int i,a=1;

for(i=1;i<=9;i++) a=(a+1)*2

printf(“%d”,a); }

答案 1534

54题:回文数是指正读和反读都一样的正整数。例如3773等都是回文数,求出[1000,9999]以内的回文数是6的倍数的最大回文数。

程序: main( ) {

int a,b,c,d,m,n; clrscr( );

for(m=1000;m<=9999;m++) {

a=m/1000;

b=(m00)/100;

c=((m00)0)/10; d=((m00)0);

if(a= =d&&b= =c&&m%6= =0)

n=m; }

printf(“%d”,n); getch( ); }

结果:8778;

55.题:计算y=1+2/3+3/5+4/7+…+n/(2*n-1) (n=50) ,要求,按四舍五入的方式精确到小数点后第二位。 程序: main() {

int n;

float sum=0.000000,y; for(n=1;n<=50;n++) y=n/(2*n—1); sum=sum+y;

printf(“%5.2f”,sum); }

答案: 26.47。

56.题:计算Y=X/1!—X^3/3!—X^7/7!+…前20项的值(已知:X=2)。要求:按四舍五入的方式精确到小数点后第二位。 程序:

include”math.h” main() {

long rfact(); int n,m,X=2;

float sum=0.000000,Y; for(n=1;n<=39;n+=2) for(m=0:m<=19;m++) Y=(-1)^mX/rfact(n); Sum=sum+Y;

Printf(“%6.2f”,sum); }

long rfact(int j) {

if(j<0) {

printf(“negative argument to fact!\\n”);

exit(-1); }

else if(j<=1) return(1); else

return(j*rfact(j-1)); }

答案:0.91

57题:将自然数1~100按顺时针围成一圈,首先取出1,然后顺时针方向按步L=30取数(已取出的数不再参加计数),直至所有的数均取完为止,最后一个去出的数是多少? 程序:main()

{int l,t,s,k,I,n=100,m=30; static int a[200];

for(I=1;I<=n;I++)a[I]=1;

for(l=0,s=0,t=0,k=1,k<=2*n;k++) {for(I=1;I<=n;I++) {s=s+a[I];

if(s==m) {a[I]=0;s=0;l++;}

- 11 -

- 1

if(l==n-1) {t=1;break;}} 有人参考,试求有多少种方案分配男人,女人和小孩if(t==1) break;} 的人数。 for(I=1;i<=n;I++) 程序: if(a[I]!=0) printf(“%d”,I); main() getch(); int men,women,childen,n; } men=1;

答案15 n=0; 58题:老王和他的孙子年龄之差为60岁,都出生于while(men<=16) 20世纪,两人的出生年份分别被3,4,5和6除,余{ 数均为1,2,3和4。问老王出生在哪一年? women=1; 程序:main() while(women<=25) { int I, k, year; {children=30-men-women; clrscr(); if(3*men+2*women+children==50) for(I=1960;I<=2000;I++) n=n+1; { k=I-60; women++; men++; if(((I%3)==1)&&((I%4)==2)&&((I%5)==3)&&((I%6)==4)&&((k printf(“%d”,n);%3 )==1)&&((k%4)==2)&&((k%5)==3)&&((k%6)==4)) } break; 答案:9 } 61题:梅森尼数是指能使2^n-1为素数的数n,求 printf(“%d”,k); [1,21]范围内有多少个梅森尼数? getch(); 程序:

} main()

答案:1918 { 59题:利用格里高利公式: int m,n,k=0,f,j; α/4=1-1/3+1/5-1/7+1/9-1/11+…-1/99 for(n=1;n<=21;n++) 求α的值,按四舍五入的方式精确到小数点后第二 { 位。 f=0;m=2^n-1; 程序: for(j=2;j<=m/2;j++) main() if(m%j==0) f=1; { if(f==0) k++; int n; } float a=0; printf(“%d\\n”,k); for(n=1;n<=50;n++) getch(); if(n%2==0) } a-=1.0/(2*n-1); 答案:10 else 62题:某些分数的分子和分母都是二位正整数的真分a+=1.0/(2*n-1); 数具有下列特点:如果将该分数的分子的两位数字加printf(“the number=%8.2f”,4a); 作分子,而将该分数的分母的两位数字加作分母,得} 到的新分子跟原分数跟原分数相等。例如63/84=答案:3.14 (6+3)/(8+4)。试求具有这样特点的真分数的个60题:马克思曾经做过一道有趣味数学题:有30个数。 人在一家小饭店里用餐,其中有男人,女人和小孩,程序: 每个男人花了3先令,如果要求男人,女人,小孩都Main()

- 12 -

-

1

{ int m,n,k=0;

for(m=11;m<100;m++) for(n=10;n

if( (float)n/(float)m==(float)(n/10+)n)/(float)(m/10+m)

k++;

printf(“%d\\n”,k); }

结果:100

63题:某一正整数,进行递减,第一次减去该数的一半再减一,以后每次减去前一次剩下的数的一半再减一,经过十次以后,剩下一,求该数. main()

{ int i,n=1;

for(i=1;i<11;i++) n=(n+1)*2;

printf(“%d”,n); }

运行结果:3070;

64题:某自然数平方的末几位与该数相同时,称此数为自同构数,例如25^625,则称25为自同构数,求出[10,100000]之间最大的自同构数。 main ( )

{long int i,k,max=1;

for(i=100000;i>=10;i--)

{for(k=10;k<100000;k=k*10)

if(i%k==i)break;

if((i*i-i)%k==0&&max

printf(“%ld”,max); }}}

答案是:87232;

65题:求[1,999]之间能被3整除,且至少有一位数字上5的所有正整数的个数。 程序:

Main( ) {

int m , n , x , y , z ; clrscr( ) ;

for(x=0; x<=9; x++) for(y=0; y<=9; y++) for(z=0; z<=9; z++) {

m=100*x + 10*y + z ; if(m % 3==0 && (x==5||y==5||z==5)) {

n++; } }

printf( “n = % d \\ n ” , n ); getch( ); }

结果: 91

66题:求[100,10000]中其个位数字之和能被7整除的树的个数。 程序: main( ) {

int m , n , a, b , c , d ; clrscr( ); n=0;

for(a=0; a<=9; a++) for(b=0; b<=9; b++) for(c=0; c<=9; c++) for(d=0; d<=9; d++) {

m=1000*a + 100*b + 10*c + d;

if((a+b+c+d)%7==0&&m<10000&&m>100) {

n++; } }

printf( “n=%d\\n”,n); getch( ); }

结果:1048

67题: 题目:求[100,999]之间的素数的个数。

程序:main() {int I,j,k,t; k=0;

for(I=100,I<1000,I++) for(j=2,j

if(i%j==0) t=1;

if(t==0) k++; }

- 13 -

- 1

printf(“The answer is %d”,k): }

答案: 143

68题:求[2,400]中相差10的相邻素数对的对数。

程序: main()

{int I,j,k=2,m,t,n; for(I=2,I<=400,I++) for(j=2,j

if(i%j==0) t=1;

if(t==0) m=k; k=i;

if(k-m==10) n++; }

printf(“The answer is %d”,n); }

答案:5对

69题:求[200,300]之间第二大有奇数个不同因子的个数。 程序:

func(int n)

{int(i=1;i<=n/2;i++) {if ((n%i)==0)sum++; }

return(sum+1); }

main()

{int i,k=0,j; clrscr();

for(i=300;i>=200;i--) {if ((func(i)%2)==1) k++; if(k==2) break; }

printf(“%d”,i); getch(); 答案:256

70题:求[3-1000]之间最大的五个素数之和。 程序:

func(int n) {int i ,sum=0: for(i=1;i<=n/2;i++) {if ((n%i)==0 sum++; }

return(sum+1); }

main()

{int,sum=0,k=0; clrscr();

for(i=1000;i>=3;i--) {if (func(i)==2) {sum=sum+i; k++;

if (k==5) break; } }

printf(“%d”,sum); getch(); 答案:4919

71题:求[444,666]范围内最大的素数是多少? 程序:main( )

{ int m, j, f, max;

for( j = 444; j<= 666; j++ ) { f =0;

for ( m=2; m<=j/2; m++ ) if( j % m = = 0 ) f =1; if(f = =0) max=j; }

printf( “%d \\n ”, max ); getch( ); } 答案:661

72题:求[500,1999]之间的十位数字为7的素数的个数。

程序:main ( )

{ int m, j, f, v ; int n=0 ;

for( j=500; j<=1999; j ++) { f = 0;

for( m=2; m<=j/2; m ++) if(j%m = =0) f =1; if(f = =0) { v = j;

if((v0)/10= =7) n++; }

- 14 -

- 1

}

printf( “%d\\n” , n); getch( ); } 答案:22

73题:求1/(1*2)+1/(2*3)+1/(3*4)+……+ 1/(N*(N+2))的值,N=20,要求:按四五入的方式精确到小数点后第二位。 程序: main()

{int a,b,c,i;

float m,n,sum=0; clrscr();

for (i=1;i<=20;i++)

{ sum=sum+(float)1/(i*(i+1)) ; }

printf(\getch(); }

答案:0.95

74题:求1/2+2/3+3/5+5/8+……的前1000项的和(注:该数列从第二项开始,其分子等于前一项的分母,而其分母等于前一项的分子与分母之和)。要求:按四舍五入的方式精确到小数点的第二位)。

程序: main()

{double sum; double a,b,i,t; a=1;b=2; sum=0.5; clrscr();

for (i=1;i<=999;i++)

{ sum=sum+(float)b/(a+b); t=a;a=b;b=t+b; }

printf(\getch(); }

答案:617.95

75题:求1000以内,同时能被3和7整除的所有自然数之和的平方根(按四舍五入的方式精确到小数点后二位)。 程序:

#include main() {

int a,b=0; float m=0.0;

for(a=0;a<=1000;a++) {if(a%3= =0&&a%7= =0) b+=a;} m=sqrt(b);

printf(“此平方根为% .2f”,m); }

答案:153.91

76题:求3到100之间所有素数的平方根之和(要求按四舍五入的方式精确到小数点后第二位)。 程序:

#include main() {int a,b;

float c,m=0.0;

for(a=3;a<=100;a++) {

for(b=2;b<=a/2;b++)

if(a%b= = 0) continue; else c=sqrt(a); m+=c; }

printf(“平方根之和是% .2f”,m); }

答案:148.87

77题:求Fibonacci数列中大于1000的最小的那个数,其中该数列定义为:

F(0)=0 ,F(1)=1, F(n)=F(n-1)+F(n-2) if n>1 程序:

Main()

{ int a , b , c , n ; a=0; b=1; do { c=a+b; a=b;

b=c; }while(c<=1000);

printf(“c=%d\\n”,c); }

- 15 -

- 1

运行结果:c=159

78. 求S=1*2+2*3+3*4+4*5+……+n*(n+1), 当和大于2000001时退出程序,求此时的n的值。 Main()

{ long int s=0,n=1; Do

{ s+=n*(n+1);

n++;}while(s<=2000001)

printf(“n=%ld\\n”,--n); }

运行结果:n=181

79题:求出[10,1000]以内同时满足除以7余5,除以5余3,除以3余1的所有整数的个数。 程序: main() {

int i,n=0;

for(i=10;i<=1000;i++)

if(i%7==5&&i%5==3&&i%3==1)n++; printf(“n=%d”,n); getch(); }

答案:9

80题:求从6开始的前6个同构数(若某数与其本身的平方数的低位部分相等,则称之为同构数,如6,其平方数为36)的和。 程序: main() {

long a=6,b,count,e,sum=0; for(count=0;count<6;a++)

{

b=a*a;

if(a<10)e=10;

if(10<=a&&a<100)e=100; if(100<=a&&a<1000)e=1000; if(1000<=a&&a<10000)e=10000; if((b-a)%e==0)

{sum=sum+a;count++;} }

printf(“sum=%d”,sum); getch(); } 答案:sum=10484

81题:求方程8*x-5*y=3,在|x|〈=150,|y|〈=200内的整数解。试问这样的整数解有多少组?

程序: main () {

int x,y,z=0;

for(x=-150;x<=150;x++) for(y=-200;y<=200;y++) {

if(8*x-5*y=3) z++;

}

printf(“no=%d”,z); }

答案:no=50

82题:求方程x^2-3*x+1=0在区间(0,1)内的解。要求:按四舍五入的方式精确到小数点后第二位。 程序:

#include”math.h”

main() {

float x,x1=0.5,f,f1; do{

x=x1;

f=x*x-3*x+1; f1=2*x-3;

x1=x-f/f1; }

while(fabs(x-x1)>0.001); printf(“x=%3.2f”,x); getch(); }

题解:0.38

83题:求符合下列条件的四位完全平方数(某个数的平方数为完全平方数),它的千位数字与个位数字之和等于百位数字与个位数字之积,例如,3136=56^2,且3+3=1*6故3136是所求的四位完全平方数。求其中最大的一个数。

程序: main()

{ int x, y, z, m, n, t, k;

clrscr();

- 16 -

- 1

k=0;

for(n=34;n<100;n++) {m=n*n;

for(x=1;x<10;x++) for(y=1;y<10;y++) for(z=0;z<10;z++) for(t=1;t<10;t++)

if(1000*x+100*y+10*z+t==m && x+z==y*t)

if(m>k) k=m; }

printf(“k=%d”,k); getch(); }

答案:k=7921

84题:求满足A*B=718368,使A+B最小,且A,B(A

{ long int x, y, z, m, k; clrscr(); m=k=718368;

for(x=100;x>1;x--)

{ if(k%x==0) { y=k/x; z=x+y;

if(x

printf(“answer:%ld\\n”,x);

} } }

getch(); }

答案: 672

85题:求满足条件abcd*e=dcba的最小的四位数abcd,其中a,b,c,d,e均为0-9的数字,但a非0,e非0非1。 程序: main() {

int a,b,c,d,e,m=10000,n; clrscr(); for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(e=2;e<=9;e++)

{if((a*1000+b*100+c*10+d)*e==(d*1000+c*100+b*10+a))

n=a*1000+b*100+c*10+d; if(n

printf(“%d”,m); getch(); } 答案:1089

86题:求五位数各数字的平方和为100的最大的五位数。 程序: main()

{ long a,b,c,d,e,m,n=0; clrscr();

for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(e=0;d<=9;d++)

{ if((a*a+b*b+c*c+d*d+e*e)==100) m=a**+b*b+c*c+d*d+e*e; if(m>n) n=m; }

printf(“%ld”,n); getch(); }

答案:94111

87题:求在[10,1000]之间的所有完备数之和。各真因子之和(不包括自身)等于其本身的正整数称为完数。例如:6=1+2+3,6是完数。 程序: main() {

int I,j,sum1,sum2; sum2=0;

for( I=10;I<=1000;I++) { sum1=0;

- 17 -

- 1

for(j=1;j<=i/2;j++) {

If(I%j==0)

sum1=sum1+j; }

if(I==sum1) sum2=sum2+I; }

printf(“sum2=%d”,sum2); getch();

}

结果:524

88题:求在[2,1000]之间的所有同构数之和 程序: main() {

long i,sum=0; long j; clrscr();

for(i=2;i<=1000;i++) {

j=i*i;

if(i>2&&i<=10&&j==i) sum=sum+i;

if(i>10&&i<=100&&j0==i) sum=sum+i;

if(i>100&&i<=1000&&j00==i) sum=sum+i; }

printf(\ getch(); }

答案:1113

89题:若(x,y,z)满足方程:x^2+y^2+z^2=55^2(注:要求x>y>z),则(x,y,z)称为方程的一个解。试求方程的所有整数解中,|x|+|y|+|z|的最大值。 程序:

#include “math.h” main() { int a[100],b[100],c[100],d[100],x,y,z,i=0,j,max; for(x=-55;x<=55;x++) for(y=-55;y<=55;y++) for(z=-55;z<=55;z++)

if(x*x+y*y+z*z==55*55&&x

c[i++]=z; } for(j=0;j

d[j]=abs(a[j])+abs(b[j])+abs(c[j]);

max=d[0] ;

for(j=1;j

if(max

printf(“%d”,max); }

答案:95

90题:若两个素数的差为2,则称这两个素数为孪生素数。求出[ 200,1000 ]之间的最大一对孪生素数的和。 程序:

int fun(int a ) { int i;

for(i=2;i<=a/2;i++)

if(a%i==0) return 0;

return 1; }

main() { int i,a;

for(i=200;i<999;i++)

if(fun(i)==1&&fun(i+2)==1) a=i;

printf(“%d”,2*a+2); }

答案:1764

91题:若某整数N的所有因子之和等于N的整数倍,如数28,其因子之和1+2+4+7+14+28

=56=2*28,28是多因子完备数。求[1,200]之间有多少个多子完备数。 程序:

int fun(int N) {

int k,s=0;

for(k=1;k<=N;k++) {

- 18 -

- 1

if(N%k==0) s=s+N%k; if(s%N==0) return(1);

else return(0); }

main() {

int N,j=0;

for(N=1;N<=200;N++) j=j+fun(N);

printf(“j=%d”,j); }

答案:j=4

92题:若某整数平方等于某两个整数平方之和的正整数称为弦数。例如:由于3^2+4^2=5^2,则5为弦数,求[100,200]之间弦数的数目。 main()

{int a,b,c,count=0; For(a=100;a<=200;a++) For(b=1;b

Printf(“count=%d”,count); }

答案:count=77

93题:若一个四位数是另一个四位数的另一个数的平方,且各位的和是一个平方数,则称该四位正整数是“四位双平方数”。例如:由于7396=86^2,且7+3+9+6=5^2,则称7349是“四位双平方数”。求所有“四数双平方数”的个数。 程序: main() {

int a,b,c,d;

int sum,loop,loop1; int num=0;

for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d<10;d++) { sum=1000*a+100*b+10*c+d; for(loop=30;loop<100;loop++)

for(loop1=1;loop1<7;loop1++)

if((loop*loop==sum)&&(loop1*loop1==(a+b+c+d))) num++; } printf(\ getch(); }

答案:num=17

94题:若一自然数等于其所有的真因子(不包括该数本身)之和;则该数称为完数。例如:6的真因子有1,2,3,且6=1+2+3,因此6为完数,求[3,1000]之间最大的完数。 程序:main() {

int num,i; int sum=0; int a; clrscr();

for(num=3;num<=1000;num++) {

for(i=1;i

if(num%i==0) sum+=i; }

if(num==sum) a=sum; sum=0; }

printf(\ getch(); }

答案:the max number is:496

95题:设某国今年的国民生产总值为45600亿元,若今后每年以8%的增长率增长,计算多少年后能实现国民生产总值翻俩番? 答:

main()

{float sum=45600;

- 19 -

- 1

int k=0;

do{sun=sum+sum*8/100; k=k+1;}

while(sum<182400); printf(“%d”,k); }

运行结果:19

96题:设某四位数的各位数字的立方和等于100,试问有多少个这样的四位数? 答:

main()

{int I, j, m,n,k=0; for(I=1;<=9;I++) for(j=0;j<=9;j++) for(m=0;m<=9;m++) for(n=0;n<=9;n++)

if(I*I*I+j*j*j+m*m*m+n*n*n==100) k=k+1;

printf(“%d”,k) }

运行结果:24

97题:设某四位数的千位数字的平方与十位数字的平方之和等于百位数字的立方与个数字的立方之和,例如,对于四位数:3201,3*3+0*0=2*2*2+1*1*1,试问这样的四位数有多少个? 程序: main() {

int a,b,c,d; int loop;

for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d>10;d++) {

if(a*a+c*c= =b*b*b+d*d*d) loop++; }

printf(“%d\\n”,loop); getch();

}

答案:21

98题:设有5个十进制数字a,b,c,d,e,求满足条件abcd×e=dcba的四位数abcd(a≠0,e≠0,e≠1)的个数。 程序: main() {

int a,b,c,d,e; int loop;

for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d<10;d++) for(e=2;e<10;e++) {

if((a*1000+b*100+c*10+d)*e=

=(d*1000+c*100+b*10+a))

{

loop++;

} }

printf(“%d\\n”,loop); getch();

}

答案:2

99题: 设有一个12*12方阵A(I,j),起每个元素的值为该元素下表的平方和,求出该矩阵所有元素的累加和(注:I,j从1开始)。 程序: main() {

int i,j,a[12][12]; int sum=0;

for(i=1;i<=12;i++) for(j=1;j<=12;j++) {

a[i][j]= =i*i+j*j;

sum+=a[i][j]; }

printf(“%d”,sum); getch(); }

答案:2908 100题: 数列

e(1)=e(2)=1,e(n)=(n-1)e(n-1)+(n-2)e(n-2),(n>2),中的每一个e(n),(n=1,2,…)称为e数。求[1,30000]之内e数的个数。

- 20 -

- 2

165.勾股弦数是满足公式: A^2+B^2=C^2 (假定A

3^2+4^2=5^2。求A,B,C均小于或等于100且A+B+C之和大于100的勾股弦数的个数。 35

166.数

列: e(1)=e(2)=1 e(n)=(n-1)e(n-1)+(n-2)e(n-2), (n>2) 称为e数列,每一个e(n),(n=1,2,?)称为e数。 求[1,30000]之内最大的e数。 16687

167.水仙花数是一个三位正整数,它等于它的各位数字的立方之和. 例

如:153=1^3+5^3+3^3,所以153是水仙花数. 试求所有的水仙花数之积。 8547940170

168.求正整数[1,500]中,能同时满足用3除余2,用5除余3,用7除余2的所有正整数的和。 1165

169.数

列 e(1)=e(2)=1 e(n)=(n-1)e(n-1)+(n-2)e(n-2), (n>2) 称为e数列,每一个e(n),(n=1,2,?)称为e数。 求[1,30000]之内e数的个数。 8

170.把一张一元钞票,换成一分、二分和五分硬币,每种至少8枚,问有多少种方案? 80

171.若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称

该 四位正整数是“四位双平方数”。例如: 由于 7396=86^2,且7+3+9+6=25=5^2,则称 7396是“四位双平方数”。求所有“四位双平方数”的个数。 17

172.斐波那契数列的前二项是1,1,其后每一项都是前面两项之和,求:10000000以内最大的斐波那契数? 9227465

173.求[200,300]之间最小的一个有奇数个不同因子的整数。 225

174.某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分子跟原分子相等。例如,63/84=(6+3)/(8+4)。试求具有这样特点的真分子的个数。 100

175.斐波那契数列的前二项是1,1,以后每一项都是前面两项之和。求10000000以内有多少个斐波那契数? 35

176.一个数出现在该数的平方数的右边,称这个数为“同构数”。例如,5出现在平方数25的右边,25出现在平方数625的右边,则5、25都是“同构数”。找出1到1000之间的所有“同构数”的个数。 164

177.若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数”。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是“四位双平方数”。求所有“四位双平方数”中最大的一个“四位双平方数”。 9025

178.斐波那契数列的前二项是1,1,以后每一项都是前面两项之和。求前30个斐波那契数之和。 2178308

179.求[300,400]之间最小的一个有奇数个不同因子的整数。 324

180.在[200,900]范围内同时满足以下两个条件的十进制数: ⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数;问有多少个这样的数? 14

181.某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分子跟原分子相等。例如,63/84=(6+3)/(8+4)。试求所有具有这种特点的真分子(非约简真分数)的分子与分母之和的和。 10134

182.求[200,300]之间第二大有奇数个不同因子的整数。 256

- 3

- 31 -

183.所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身,例如:

153=1^3+3^3+5^3,故153是水仙花数,求[100,999]之间水仙花数的个数。 4

184.回文数是指正读和反读都一样的正整数。例如3773是回文数。求出[1000,9999]以内的所有回文数的个数。 90

185.一个14*14方阵A(i,j),其每个元素的值为该元素下标的立方和,求出该矩阵所有元素的累加和(注:i,j从1到14). 308700

186.某些分数的分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子的两位数字相加作分子,而将该分数的分母的两位数字相加作分母,得到的新分子跟原分子相等。例如,63/84=(6+3)/(8+4)。试求所有具有这样特点的真分子(非约简真分数)的分子之和。 3378

187.所谓“水仙花数”是指一个三位数,其各位数字三方和等于该数本身,例如:

153=1^3+3^3+5^3,故153是水仙花数,求[100,999]之间所有水仙花数之和。 1301

188.求[100,200]之间最大的有奇数个不同因子的整数。 196

189.若(x,y,z)满足方程:

x^2+y^2+z^2=55^2(注:要求 x > y > z),则(x,y,z)称为方程的一个解。试求方程的整数解(包括负整数解)的个数。 62

190.所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[1,1000]之间有多少个同构数。 6

191.一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求1000以内的所有完数之和。 530

192. A,B,C三个正整数,当满足

1/A^2+1/B^2=1/C^2关系时,称为倒勾股数。求130

193.所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[1,1000]之间所有同构数之和。 1113

194.一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求[8100,8200]之间的所有完数。 8128

195.水仙花数是一个三位正整数,它等于它的各位数字的立方之和. 例

如:153=1^3+5^3+3^3,所以153是水仙花数. 求400以内的最大水仙花数与最小水仙花数之积。 56763

196.梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内有多少个梅森尼数? 7

197.一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如, 6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求[1,1000]之间的最大完数。 496

198.若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。求[1,200]之间有多少个多因子完备数。 4

199.梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内最大的梅素尼数? 19

200.设某国今年的国民生产总值为45600亿元,若今后每年以9%的增长率增长,计算多少年后能实现国民生产总值翻一番? 9

201.已知:f(1)=1,f(2)=1/(1+f(1)),

f(3)=1/(1+f(2)),?,f(n)=1/(1+f(n-1)),求f(50)。(按四舍五入的方式精确到小数点后第三位)。 0.618

- 32 -

- 3

202.设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的四位数abcd的个数。 2

203.已知24有8个正整数因子

(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求[100,300]之间能被其因子数目整除的数中最大的数。 296

204.梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内有多少个梅森尼数? 7

205.设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的所有四位数abcd的和。 3665

206.有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求这种三位数共有多少个? 4

207.某些分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子个位数和分母十位数同时去掉,所得结果正好等于原分数约分后的结果,例如16/64=1/4,求满足上述条件的所有真分数个数。 48

208.若两个自然连续数乘积减1后是素数,则称此两个自然连续数为友数对,该素数称为友素数,例:2*3-1=5,因此2与3是友数对,5是友素数,求[40,119]之间友素数对的数目。 30

209 .找满足以下条件: X^2+Y^2+Z^2=41^2 且X+Y+Z之值最大的三个正整数X,Y,Z, 求X+Y+Z之值. 71

220.一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求[1,1000]之间的第二大完数。 28

- 33 -

- 3

}

123.有一个分数序

列:2/1,3/2,5/3,8/5,13/8,21/13....(注:该数列从第二项开始,其分子是前一项的分子与分母的和,而其分母是前一项的分子),求出这个序列前24项的和。要求:按四舍五入的方式精确到小数点后第二位。 39.13 #include

6,8,12,24),而24正好被其因子个数8整除。问[100,300]之间有多少个能被其因子数目整除的数。 19 #include void main() { int i,n,j,k=0; clrscr();

main()

for (i=100;i<=300;i++)

{ float s1=2,s2=1,s,t=0,i;

{ n=0;

t=t+s1/s2;

for (j=1;j<=i;j++)

for (i=1;i<=23;i++)

if (i%j==0) n++;

{ s=s1;

if (i%n==0)

s1=s1+s2;

{ k++; printf(\

s2=s;

}printf(\

t=t+s1/s2;

}

}

printf(\}

124.倒勾股数是满足公式:

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,求满足倒勾股数公式的各组正整数(A,B,C)中C值的和是多少? 180

125.已知A

126.已知24有8个正整数因子(即:1,2,3,4,

127.自然数对是指两个自然数的和与差都是平方数,如8和17的和8+17=25与其差17-8=9都是平方数,则称8和17是自然数对(8,17)。假定(A,B)与(B,A)是同一个自然数对且假定A>=B,求所有小于或等于100 (即:A<=100,B<=100)的自然数对中B之和。 1160

#include \#include \void main()

{ int a,b,n=0;float s1,s2; for(b=1;b<=100;b++) for (a=b+1;a<=100;a++)

- 26 -

- 2

{ s1=sqrt(a+b);s2=sqrt(a-b); if ( s1==(int)s1 && s2==(int)s2 ) { n=n+b;printf(\,a,b);} }

printf(\

#include \void main() { int i,a,b,c,n=0; for(i=100;i<=999;i++) { a=i/100;

}

b=(i/10);

128.已知Fibonacci数列:1,1,2,3,5,8,??,它可由下面公式表

述: F(1)=1 if

n=1 F(2)=1 if

n=2 F(n)=F(n-1)+F(n-2) if n>2 试求

F(2)+F(4)+F(6)+??+F(50)

值。 提示: 最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。 20365011073 2006

129.求[1,5000]之间能同时被3和7整除的数的个数。 238 #include \void main() { int i,j=0;

for(i=1;i<=5000;i++) if (i%3==0 && i%7==0) { j++;printf(\printf(\}

{ long int i=45600;

130.水仙花数是一个三位正整数,它等于它的各位数字的立方之和. 例

如:153=1^3+5^3+3^3,所以153是水仙花数. 试求有多少个水仙花数? 4

c=i;

if (i==a*a*a+b*b*b+c*c*c) { n++;printf(\ }

printf(\}

131.已知Fibonacci数列:1,1,2,3,5,8,??,它可由下面公式表

述: F(1)=1 if

n=1 F(2)=1 if

n=2 F(n)=F(n-1)+F(n-2) if n>2 试求F(45)

值。 提示: 最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。 1134903170

132.设某国今年的国民生产总值为45600亿元,若今后每年以8%的增长率增长,计算多少年后能实现国民生产总值翻两番? 19 void main( )

int j=0;

while (i<=4*45600)

- 27 -

- 2

{ i=i+i*0.08;j++;} printf(\}

133.勾股弦数是满足公式: A^2+B^2=C^2 (假定A #include void main() { int i,n=0,j,k; for (i=1;i<=25;i++) for (j=i;j<=25;j++) for (k=j;k<=100;k++)

if (i*i+j*j==k*k && i+j+k<100) { n++;printf(\; }

printf(\}

134.已知Fibonacci数列:1,1,2,3,5,8,??,它可由下面公式表

述: F(1)=1 if

n=1 F(2)=1 if

n=2 F(n)=F(n-1)+F(n-2) if n>2 试求

F(1)+F(3)+F(5)+??+F(49)

值。 提示: 最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。 12586269025

135.求[1,5000]之间能被3或7整除的数的个数。 2142

136.若某整数平方等于某两个正整数平方之和的正整数称为弦数。例如:由于

3^2+4^2=5^2,则5为弦数,求[100,200]之间弦数的数目 4

137.设有6个十进制数字a,b,c,d,f,e,求满足abcdf×e=fdcba条件的五位数abcdf(a≠0,e≠0,e≠1)的个数。 2 #include void main()

{ long int a,b,c,d,e,f,n=0; for (e=2;e<=9;e++) for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(f=0;f<=9;f++)

if

((a*10000+b*1000+c*100+d*10+f)*e==f*10000+d*1000+c*100+b*10+a)

{printf(\ld\\n\ printf(\}

138.已知24有8个因子(即:1,2,3,4,6,8,12,24),而24正好被8整除。求[1,100]之间第二大能被其因子数目整除的数。 88

- 28 -

- 2

139.勾股弦数是满足公式: A^2+B^2=C^2 (假定A

3^2+4^2=5^2。求A,B,C均小于或等于100的勾股弦数中A+B+C的最大值。 240 #include #include void main()

{ int i,j,k,i1=0,j1=0,k1=0;

{ a=i/1000; b=(i00)/100; c=((i00)/10); d=i;

if (a*a+b*b+c*c+d*d==100 ) { n++;printf(\,b,c,d); }

for (i=1;i<=100;i++)

}

for (j=i;j<=100;j++)

printf(\

for (k=j;k<=100;k++)

}

if (i*i+j*j==k*k )

{ printf(\,i+j+k);

if (i+j+k>i1+j1+k1) {i1=i;j1=j;k1=k;} }

printf(\}

140.设某四位数的各位数字的平方和等于100,问共有多少个这种四位数? 49 #include #include void main()

{ int i,n=0,a,b,c,d; for (i=1000;i<=9999;i++)

141.若某整数平方等于某两个正整数平方之和的正整数称为弦数。例如:由于

3^2+4^2=5^2,则5为弦数,求[100,200]之间最大的弦数。 130

142.求方程8x-5y=3,在|x|<=150, |y|<=200内的整数解。试问这样的整数解中|x|+|y|的最大值是多少? 323

143.若两素数之差为2 ,则称两素数为双胞胎数,问[31,600]之间有多少对双胞胎数。 21

144.若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。求[1,500]之间有多少个多因子完备数。 5

145.求方程8x-5y=3,在|x|<=150, |y|<=200内的整数解。试问这样的整数解中x+y的最大值是多少? 314

146.一个素数(设为p)依次从最高位去掉一位,二位,三位,??,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均

- 29 -

- 2

不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 39

147.若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。求[1,200]之间有多少个多因子完备数。 4

148.四位数的各位数字的平方和等于100,问其中最大的一个是多少? 9331

149.设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的最大四位数abcd的值。 1999

150.有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求所有这样的三位数之和。 1301

151.若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。求[1,200]之间有多少个多因子完备数。 4

152.求[2,500]之间的所有素数的和。 21536

153.设有6个十进制数字a,b,c,d,f,e,求满足abcdf×e=fdcba条件的五位数abcdf中(a≠0,e≠0,e≠1)最大的一个。 21978

154.若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。求[1,200]之间有多少个多因子完备数。 4

155.求[3-1000]之间最大的五个素数之和。 4919

156.设某四位数的千位数字和十位数字的和等于百位数字和个位数字的积,例如,对于四位数:9512,9+1=5*2,试问这样的四位数有多少个? 207

157.已

知: f(0)=f(1)=1 f(2)=0 f(n)=f(n-1)-2f(n-2)+f(n-3), (n>2) 求f(0)到f(50)中的最大值 598325

158.有一个分数序

列:2/1,3/2,5/3,8/5,13/8,21/13....(即:该数列从第二项开始,其分子是前一项的分子与分母之和,而其分母是前一项的分子),求出这个序列前56项的和。要求:按四舍五入的方式精确到小数点后第三位。 90.919

159.勾股弦数是满足公式: A^2+B^2=C^2 (假定A

3^2+4^2=5^2。求A,B,C均小于或等于100的勾股弦数的个数。 52

160.已

知: f(0)=f(1)=1 f(2)=0 f(n)=f(n-1)-2f(n-2)+f(n-3), (n>2) 求f(0)到f(50)中的最小值 -288959

161.已知24有8个因子(即:

1,2,3,4,6,8,12,24),而24正好被8整除。求[100,300]之间所有能被其因子数目整除的数之和。 3769

162.勾股弦数是满足公式: A^2+B^2=C^2 (假定A

3^2+4^2=5^2。求A,B,C之和小于100的勾股弦数的个数。 17

163.若两个素数之差为2,则称这两个素数为双胞胎数。求出[200,1000]之内有多少对双胞胎数。 20 2021

164.问[100,200]之间有奇数个不同因子的整数共有多少个? 5

- 3

- 30 -

本文来源:https://www.bwwdw.com/article/czc2.html

Top