1、 C语言程序设计复习题库1、计算下面公式值。T=1/1!+1/2!+1/3!+1/m!当m=5时成果(按四舍五入保存3位小数)。(注:所有变量用float数据类型定义!)答案:1.7172、程序填空:用*号输出字母C图案。#include stdio.h#include conio.hmain()_printf( *n);_getch();3、8232和9678,它们个、十、百、千各位数字之和是15倍数,8+2+3+2=15,9+6+7+8=30。编写程序,求四位数所有奇数中,这样数(各位数字之和是15倍数)总和。(注:所有变量用long数据类型定义!) 答案:15334594、/*下面程序功
2、能是:计算并输出700以内最大10个能被13或者17整除自然数之和。请改正程序中错误,并运营,最后给出程序运营对的成果。(注:只有一处错误!)*/ 答案:6591#include void main() int total=0,mc=1,k=700; int pm10,count=0; while( (k=2) & mc=10 ) if (k%13=0) | (k%17=0) pmmc = k; mc+; k-; for( k=1;k=10;k+ ) total += pmk-1; printf( %dn,total);5、求x = 1+1/5+1/7+1/9+近似值,直到最后一项绝对值不大于
3、10-5为止。6、计算如下公式A20值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),.(按四舍五入保存10位小数)。答案:0.7、求10,1600之间能被7整除奇数之和。答案:909658、函数mystrlen(char *s)功能是求字符串s长度。请填空。Int mystrlen(char *s)int num=0;while( ) _;return ( );9、100,500之间同步满足除以7余5,除以5余3,除以3余1整数之和。答案:104210、求100,999之间所有素数个数。答案:14311、编写程序,求满足下列条件所有四位数ABCD个数,该
4、四位数是8倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。答案:11012、/*数列1,2,1,4,7,12,23具备这样特性,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7.。下列程序功能是求出该数列前10项和。请改正程序中错误,并运营修改后程序,给出程序成果。(注:只有一处错误!)*/ 答案:311#include void main() long sum=0,a30=1,2,1; int k,j; for( k=3;k10;k+ ) ak = ak-1+ak-2+ak-3; for( j=1;j=10;j+ ) su
5、m += aj; printf( %ldn,sum);13、/*求1到之间双胞胎数对数。双胞胎数:两素数差为2称为双胞胎数。例如227和229是一对双胞胎数,它们都是素数且差为2。*/ 答案:61#include int prime(int x) int k; for(k=2;kx;k+) if(_) break; if(k=x) return 1; else return 0;void main( ) int a,b,n=0; int prime(int x); for(a=2;a=1998;a+) if(prime(a)=1) b=a+2; if(_) n+; printf( %d n,n
6、);14、编写程序,记录200400之间所有满足三个数字之积为42,三个数字之和为12数个数。答案:415、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生人数分派共有多少种不同解(去掉某类学生数为0解)?答案:916、爱因斯坦走台阶:有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件最小台阶数是多少?答案:11917、/*求1000以内最大10个素数和。*/ 答案:9664#include
7、int prime(long n) long k; for(k=2;k=2;t-) if(_) total=total+t;num+; if(num=10)break; printf(n%ld,total);18、/*求1!+2!+3!+.+7!,7!表达7阶乘。*/ 答案:5913#include long jc( long x) long k,fac=1; for(k=1;_;k+) fac *=k ; _;void main( ) long n,sum=0; long jc(long x); for(n=1;n=7;n+) _; printf(n%ld,sum);19、求10000以内所
8、有完数之和,完数是指:一种数如果刚好与它所有真因子(不涉及该数自身)之和相等,如:6=1+2+3,则6就是一种完数。(注:所有变量用int数据类型定义!) 答案:865820、/*数列1,2,1,4,7,12,23具备这样特性,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7.。下列程序先给出数列第一项(1)、第二项(2)、第三项(1),再逐渐计算其他项并保存在数组a中,最后求出该数列第25项。请改正程序中错误,并运营修改后程序,给出程序成果。(注:只有一处错误!)*/答案:1323525#include #include #define N 30
9、void main() long aN; int k; clrscr(); a0 = 1; a1 = 2; a2=1; for( k=3;k=20;k+ ) ak = ak-1+ak-2+ak-3; printf( %ldn,ak-1);21、/*求区间200,3000中所有回文数和,回文数是正读与反读都是同样数,如525,1551。*/ 答案:87970#include int hws(long n) long x=n,t=0,k; while(x0) k=x%10; t = t*10 + k; x=x/10; if( _) return 1; else return 0;void main
10、( ) long k,s=0; int hws(long n); for(k=200;k=;k+) if(_) s=s+k; printf(n%ld,s);22、/*下面程序是求表达式值:s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+.+(1*2*3*.*n)/(3*5*7*.(2*n+1)请将程序补充完整,并给出当n=25时,程序运营成果(按四舍五入保存10位小数)。*/答案:1.#include double fun(int n) double s=1.0,t=1.0; int k; double rtn=1.0; for(k=1;k1; f(x)=0 如果 x=
11、0 或 x=2 ;f(x)=(x-1)/(x-2) 如果 x=a&c=A&c=0&c=9) _ else _ printf(all in all:char=%d space=%d digit=%d others=%dn,letters,space,digit,others); getch();40、打印出如下图案(菱形) * * * *41、求出2,478以内: (1)最大素数。 *467 (2)素数数目。 *91 (3)所有素数之和。 *1958042、已知: (1)若N=10,求Y 。 *1304735 (2)若N=15,求Y。 *1.184172E+0743、已知:,其中:X = 0.2
12、5,n = 1,2,求:(1) Y值(精准到小数点后第5位) *1.28767(2) 与(1)匹配最小n *744、如下程序输入三个整数值给a,b,c,程序把b中值给a,把c中值给b,把a中值给c,互换后输出a、b、c值。例如:读入后,a=10、b=20、c=30;互换后,a=20、b=30、c=10。请填空。#includestdio.hmain()int a,b,c,t; printf(Enter a,b,c:); scanf(ddd, _); _;a=b;_;_; printf(a=d b=d c=dn,a,b,c);45下面fun函数功能是从a数组中查找值为y元素;若找到,返回该元素下
13、标值,若不存在值为y元素,返回0;数列放在a数组a1到an中,a0元素用来作为暂时存储单元。请填空。fun(int a,int y,int n)int k=0; a0=y;k=n; while( ) k-; return( );46、/*下列程序功能是求出二阶Fibonacci数列前10之和,1,1,2,3,5,8。请改正程序中错误,并运营修改后程序,给出程序成果。(注:只有一处错误!3是第四项,5是第五项。)*/ 答案:143#include void main() long sum=0,a30=1,1,2; int k; for( k=2;k10;k+ ) ak = ak-1+ak-2;
14、for( k=1;k=10;k+ ) sum += ak; printf( %ldn,sum);47、20,160之间所有偶数平方和。答案:69438048、求10,之间能被2或3或5整除数之和。答案:6779549、求800以内最大20个素数之和。答案:1451050、求当n=60时下式和:s=1+1/(1+2)+1/(1+2+3)+.+1/(1+2+3+.+n)(按四舍五入保存6位小数)。答案:1.96721451、编写程序:输入x值,按照下列公式计算cos(x)cos(x)=1-x2/2!+ x4/4!- x6/6!+. 精准到10-5。/*C11.717*/main()int i;lo
15、ng jc=1;float s=0;for(i=1;i=5;i+) jc=jc*i; s=s+1.0/jc; printf(%f,s); /*C3 1533459*/main()long i,c=0,t=0,g,s,b,q;for(i=1001;i=1;i-) if(i%13=0|i%17=0) c+; s+=i; if(c=10)break; printf(%d,s); /*C5 6.058311*/main() long i=5; double s=1; while(1.0/i=1e-5) s=s+1.0/i; i=i+2; printf(%lf,s); /*C6 0. */main()i
16、nt i;double a=1;for(i=2;i=20;i+) a=1.0/(1+a); printf(%.10lf,a); /*C7 90965*/main()long i,s=0;for(i=11;i=1600;i=i+2) if(i%7=0) s=s+i;printf(%ld,s); /*C9 1042 */main()long i,s=0;for(i=100;i=500;i+) if(i%5=3&i%7=5&i%3=1) s=s+i;printf(%ld,s); /*C10 143*/main()int c=0,i,j,p;for(i=100;i=999;i+) p=1; for(j
17、=2;ji;j+) if(i%j=0)p=0;break; if(p=1)c+; printf(%d,c); /*C11 110*/main()int c=0,i,q,b,s;for(i=1000;i=9999;i=i+8) q=i/1000; b=i/100%10; s=i/10%10; if(q+b=b+s)c+; printf(%d,c); /*C13 61*/#includefun.cmain( )int a,b,n=0;int prime(int x); for(a=2;a=1998;a+) if(prime(a)=1&prime(a+2)=1) n+;printf(%d,n); /
18、*C14 4*/main()int c=0,i,g,s,b;for(i=200;i=400;i+) g=i%10; s=i/10%10; b=i/100; if(g+s+b=12&g*s*b=42) c+; printf(%d,c); /*C15 9*/main()int d,z,x,c=0;for(d=1;d=17;d+) for(z=1;z=0&d*3+z*2+x=50) c+; printf(%d,c); /*C16 119*/main()int tj,i,j;for(tj=1;tj=0;tj+) if(tj%2=1&tj%3=2&tj%4=3&tj%5=4&tj%6=5&tj%7=0)
19、break;printf(%d,tj); /*C19 8658*/main()int i,s=0,w,j;for(i=1;i=10000;i+) w=0; for(j=1;ji;j+) if(i%j=0)w+=j; if(w=i)s+=i; printf(%d,s); /*C20 1323525*/main()long a25=1,2,1;int i;for(i=3;i25;i+) ai=ai-1+ai-2+ai-3;printf(%ld,a24); /*C22 1.*/#define N 24main()int i,j;double s=1,s1,s2;for(i=1;i=N;i+) s1=
20、1; s2=1; for(j=1;j=i;j+) s1*=j; s2*=(2*j+1); s+=(s1/s2); printf(%.10lf,s); /*C23 49.395*/main()int i=1;double s=0;do s+=(1+1.0/i); printf(n%0.3lf,s); i+; while(s50); /*C24 0.91*/#includemain()int x=2,i,j;double jc(int i);double y=0,fz;for(i=1;i=20;i+) fz=pow(-1,i+1)*pow(x,2*i-1); y+=fz/jc(2*i-1); pr
21、intf(n%d,%.0lf/%.0lf,i,fz,jc(2*i-1); printf(n%.2lf,y);double jc(int i)int j;double r=1;for(j=1;j=i;j+) r*=j;return r; /*C25 135*/#includemain()long a,b,c;int xs=0;for(c=131;c=200;c+) xs=0; for(a=1;ac;a+) b=sqrt(c*c-a*a); if(b*b+a*a=c*c) xs=1; break; if(xs=1) printf(%ld,c); break; /*C26 43*/main()int
22、 d=25;int x,y,z,max=0;for(x=1;xd;x+) for(y=1;yd;y+) for(z=1;zd;z+) if(x*x+y*y+z*z=d*d&maxx+y+z) max=x+y+z;printf(%d,max); /*C28 20*/#includemain()int a,b,c,n=0;int xs=0;for(c=1;c=50;c+) for(a=1;ac;a+) for(b=1;ba;b+) if(b*b+a*a=c*c)n+;printf(%d,n);/*C30 */#includemain()double x1=1.0,x2;double a;scanf
23、(%lf,&a);while(1) x1=1.0/2*(x1+a/x1); if(fabs(x2-x1)=1e-5) break; else x2=x1; printf(%lf,x1); /*C35 67.223018*/main()double f(double x),s=0;int i;for(i=-30;i1)y=(x+1)/(x-2);else if(x0)y=(x-1)/(x-2);return y; /*C38 1.480392*/main()double t=1;int m;for(m=2;m=50;m+) t=t+1.0/(m*(m+1);printf(%lf,t);/*C41
24、 467,91,19580*/#includefun.cmain()int i,c=0,s=0,max;for(i=2;i=478;i+) if(prime(i) max=i; c+; s+=i; printf(%d,%d,%d,max,c,s); /*C42 1304735*/#define N 10main()int i;double a,b,y=0;for(i=1;i=N;i+) if(i%2=0) a=i/2.0;b=i*i*i; else a=i;b=i*i; y=y+(a-b)*(a-b); printf(%lf,y); /*C43 7*/#define X 0.25#includ
25、emain()double y=1,s=1.28767;int i;for(i=1;y=s;i+) y=y+(double)pow(X,i)/i;printf(%d,i);/*C46 143*/#include void main() long sum=0,a30=1,1,2; int k; for( k=2;k10;k+ ) ak= ak-1+ak-2; for( k=0;k=10;k+ ) sum += ak; printf( %ldn,sum); /*C47 694380*/main()long i,s=0;for(i=20;i=160;i+=2) s=s+i*i;printf(%ld,
26、s); /*C48 1466295*/main()long i,s=0;for(i=10;i=1;i-) if(prime(i)&c20) c+; s=s+i; printf(n%d,s); /*C50 1.967213*/#define N 60main()int i;double s;for(i=1;i=60;i+) s=s+1.0/(1+i)*i/2);printf(%lf,s); /*fun.c自定义函数判断素数*/int prime(int x) int k; for(k=2;kx;k+) if(x%k=0) break; if(k=x) return 1; else return 0;