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("%d",i);}
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)
count++;
}
printf("%d",count);
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("%d",i-1);
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("%d",c);
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++;
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 printf(“max=%d\n”,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++) { 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”,s um); 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%11==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( ) { 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%17==0||a%23==0) sum++; } printf(“%d\n”,sum); getch(); } 输出结果:299 24题:编写程序,计算1000以内有多少个这样的数,该数既能被6整除又能被8整除。 程序: main() { 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("n=%d",n); } 答案: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("n=%d",n); } 答案: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)%11==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%10; e=(m-d)/10; c=e%10; f=(e-c)/10; b=f%10; a=((f-b)/10)%10; if((a+b+c+d)%15= =0) sum=sum+m; } printf(“sum=%d”,sum); getch(); } 答案: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%10; e=(m-d)/10; c=e%10; f=(e-c)/10; b=f%10; a=((f-b)/10)%10; if(a*b*c*d!=0&&(a*b*c*d)%125= =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=%d\n",sum); } 答案:sum=2000 35题:编写程序,求在四位数的偶数中,所有各位数字之和是30倍数的数的和。 程序: main() { int i,j,k,l,m,s; s=0; for(m=1000;m<10000;m++) {i=m/1000;j=(m%1000)/100;k=(m%100)/10;l=m %10; if(m%2==0&&(i*j*k*l)%18==0) s=s+m; } printf("%d\n",s); } 答案:26696 36题:编写程序,求在四位数的的偶数中,所有各位数字之积(且不为0)是18的倍数的数的和。 程序: main() { int i,j,k,l,m,s; s=0; for(m=1000;m<10000;m++) {i=m/1000;j=(m%1000)/100;k=(m%100)/10;l=m %10; if(m%2==0&&(i*j*k*l)%18==0) s=s+m; } printf("%d\n",s); } 答案:15284 37题:求四位的奇数中,所有各位数之和是25倍数的数的和; main() { int a; long b=0; for(a=1001;a<=9999;a+=2) if(a/1000%10+a/100%10+a/10%10+a%10==25) b=b+a; printf("b=%ld\n",b); } 答案是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%10+a/10%10= =10&&a/100%10*a/1000%10= =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)%10;k=n%10; 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)%10;k=(n/10)%10;L=n%10; 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(求按四舍五入的方式精确到小数点后面第四位)。 程序如下: 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("%8.4f",s); } 结果: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("%8.4f",s); } 结果: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++)