《C 语言程序设计》复习库题
1、 计算下面公式的值。 T=1/1!+1/2!+1/3!+ ⋯ ⋯ +1/m! 当 m=5 时的结果(按四舍五入保留
位小数)。(注:所有变量用 float 数据类型定义!)答案: 1.717 2、 程序填空:用 * 号输出字母C 的图案。 #include \"stdio.h\" #include \"conio.h\" main() {
_____________ printf(\" *\\n\"); _____________ _____________ getch(); }
3、8232 和 9678,它们的个、 十、百、千各位数字之和是 15 的倍数,8+2+3+2=15,9+6+7+8=30 。 编写程序,求四位数的所有 奇 数中,这样的数 (各位数字之和是 15 的倍数 )的总和。 (注:所 有变量用 long 数据类型定义!) 答案: 1533459
4、 /*下面程序的功能是:计算并输出 700 以内的最大的 10 个能被 13 或者 17 整除的自然 数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。 (注:只有一处错 误!)*/ 答案: 6591 #include int total=0, mc=1, k=700; int pm[10],count=0; while( (k>=2) && mc<=10 ) { if ((k%13==0) || (k%17==0)) { pm[mc] = k; mc++; } k--; } for( k=1;k<=10;k++ ) total += pm[k-1]; printf(\" %d\\n\} 5、求 x = 1+1/5+1/7+1/9+ -5 为止。 ⋯ 的近似值,直到最后一项的绝对值小10 于 (按 3 6、 计算如下公式的 A20值。 A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ...... 四舍五入保留 10 位小数)。答案: 0.6180339850 7、求[10,1600] 之间能被 7 整除的奇数之和。答案: 90965 ... ... 8、函数 mystrlen(char *s) 的功能是求字符串 s 的长度。请填空。 Int mystrlen(char *s) {int num=0; while( ) {____;} return ( ); } 9、[100,500] 之间同时满足除以 7余5,除以 5余3,除以 3余 1的整数之和。答案: 1042 10、 求[100,999] 之间所有的素数的个数。答案: 143 11、编写程序, 求满足下列条件的所有四位数 ABCD的个数, 该四位数是 8的倍数, 且A+B=B+C, 即第 1位数加上第 2位数等于第 2位数加上第 3位数。答案: 110 12、 /* 数列 1,2,1,4,7,12,23⋯ 具有这样的特征,从第四项(也是就 4)开始,每一项是前三 项之和, 4=1+2+1,7=2+1+4 ,12=1+4+7⋯ .。下列程序的功能是求出该数列前 10 项的和。请改正程序中的错误,并运行修改后的程序,给出程序结 。果 (注:只有一处错误!)*/ 答案: 311 #include long sum=0,a[30]={1,2,1}; int k,j; for( k=3;k<10;k++ ) a[k] = a[k-1]+a[k-2]+a[k-3]; for( j=1;j<=10;j++ ) sum += a[j]; printf(\" %ld\\n\} 13、 /* 求 1 到 2000 之间的双胞胎数的对数。双胞胎数:两素数差为 2 称为双胞胎数。例如 227 和 229 是一对双胞胎数,它们都是素数且差为 2。*/ 答案: 61 #include int k; for(k=2;k 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\ } 14、 编写程序,统计 200~400之间的所有满足三个数字之积为 个数。答案: 4 15、有30个学生一起买小吃,共花钱 50元,其中每个大学生花 3元,每个中学生花 2元,每个 小学生花 1元,问大、中、小学生的人数分配共有多少种不同的解 (去掉某类学生数为 0的解)? 答案: 9 16、爱因斯坦走台阶 : 有一台阶 , 如果每次走两阶 , 最后剩一阶 ; 如果每次走三阶 , 最后剩两阶 ; 如果每次走四阶 , 最后剩三阶 ; 如果每次走五阶 , 最后剩四阶 ; 如果每次走六阶 , 最后剩五阶 ; 如果每次走七阶 , 刚好走完 . 求满足上述条件的最小台阶数是多少?答案: 17、 /* 求 1000 以内最大的 10 个素数的和。 */ #include long k; for(k=2;k<=n-1;k++) if(____________) return 0; return 1; } void main( ) { long t,total=0,num=0; int prime(long n); for(t=1000;t>=2;t--) { if(____________) { total=total+t; num++; } if(num==10)break; } printf(\"\\n%ld\} 18、 /* 求 1!+2!+3!+...+ 7!,7!表示 7 的阶乘。 */ #include long k,fac=1; for(k=1;________;k++) fac *=k ; ________; } 答案: 5913 答案: 96 119 42,三个数字之和为 12的数的 ... ... void main( ) { long n,sum=0; long jc(long x); for(n=1;n<=7;n++) ________; printf(\"\\n%ld\} 19、求 10000 以内所有完数之和, \"完数 \"是指:一个数如果刚好与它所有的真因子(不包括 该数本身)之和相等,如: 6=1+2+3,则6 就是一个完数。 (注:所有变量用int 数据类型定 义!) 答案: 8658 20、/*数列 1,2,1,4,7,12,23⋯ 具有这样的特征,从第四项(也就是 4)开始,每一项是前三项 之和, 4=1+2+1,7=2+1+4,12=1+4+7 ⋯ .。下列程序先给出数列的第一项 (1)、第二项( 2)、 第三项( 1),再逐步计算其它项并保存在数组a 中,最后求出该数列的第 #include long a[N]; int k; clrscr(); a[0] = 1; a[1] = 2; a[2]=1; for( k=3;k<=20;k++ ) a[k] = a[k-1]+a[k-2]+a[k-3]; printf(\" %ld\\n\} 21、/* 求区间[200,3000] 中所有回文数的和, 回文数是正读与反读都是一样的数, */ 答案: 87970 #include long x=n,t=0,k; while(x>0) { k=x%10; t = t*10 + k; x=x/10; } if( ___________) return 1; else return 0; } void main( ) 如 525,1551。 25 项。请改正程 序中的错误, 并运行修改后的程序, 给出程序结果。 (注: 只有一处错误!)*/ 答案: 1323525 ... ... { long k,s=0; int hws(long n); for(k=200; k<=2000;k++) if(___________) s=s+k; printf(\"\\n%ld\} 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.5707963267 #include double s=1.0, t=1.0; int k; double rtn=1.0; for(k=1;k<=n; k++) { t = t*k; s = s*(2*k+1); _________________ } return rtn; } void main() { double sum; __________ printf(\"\\n %.10lf\ } 23、 已知: Sn=2/1+3/2+4/3+ ⋯ +(n+1)/n, 到小数点后第三位)。答案: 49.395 ⋯ ⋯ 前 20项的值 ( 已知: X=2)。要求:按四舍五入 , 称该正整数为弦数。例: 3^2+4^2=5^2 ,则 135 0.91 24、 计算Y=X/1!-X^3/3!+X^5/5!-X^7/7!+ 的方式精确到小数点后第二位。答案: 25、若某正整数平方等于某两个正整数平方之和 求Sn不超过 50的最大值(按四舍五入的方式精确 5为弦数,求 [131 ,200] 之间最小的弦数。答案: 26、 已知 X,Y,Z 为三个正整数,且X^2+Y^2+Z^2=25^2,求 X+Y+Z的最大值。答案: 43 27、猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一 个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。 桃子的一半零一个。 到第 10天早上小猴子再去吃桃子时, 第一天共摘下了多少个桃子。答案: 1534 3*3+4*4=5*5 ,它们 以后每天都是吃尚存 看到只剩下一个桃子了。 问小猴子 28、求[1 ,50] 之间的所有整数能构成直角三角形的三边的组数。例 :如 构成直角三角形,所以 {3 ,4,5} 作为一组,但{4 ,3,5} 视为跟{3 ,4, 5} 相同的一组。答 ... ... 案: 20 29、15元钱换成 1元、2元、5元的票面,问有多少种不同的兑换方法?输出所有的兑换方法。 答案: 18 种 30、 用迭代法求 x等于 a开平方的正数值。 迭代公式为: xn+1=1/(2*(x n+a/x n)) ,要求直到前后两次求出的 -5 为止。 A的值从键盘输入。 31、求最大的水仙花数, 所谓水仙花数, 指的是一个三位数, 其各个数字的立方之和等于该 数。 答案: 407 10 10次反弹多高? 8 个 float 类型的实数,分别求最大值和最小值,保留 32、 一球从 100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第 次落地时,共经过多少米?第 答案: 299.609375 0.097656 33、 编写程序,完成如下功能,输入 三位小数输出最大值和最小值。 34、 编写程序输出如下字符图形: @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ⋯ @ @ @ 35、 计算: s=f(-30)+f(-29)+......+f(-1)+f(0)+f(1)+......+f(30) 的值。其中函数定义 如下:f(x)=(x+1)/(x-2) 如果 x>1 ;f(x)=0 如果 x=0 或 x=2 ;f(x)=(x-1)/(x-2) 如 果 x<0 。(按四舍五入保留 6 位小数 ) 答案: 65.223018 36、 编写程序输出如下字符图形(最后一行 * * * * * * * * * * * * * * * ⋯ * * * ⋯ * * * * (I) 低于或等于 10 万元时,奖金可提 10%;利润高 5%;40 万到 60 万之间时高于 37、 企业发放的奖金根据利润提成。利润 19 颗星): x 的差的绝对值小于 10 于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可提 成 7.5%;20 万到 40 万之间时,高于 20 万元的部分,可提成 40 万元的部分,可提成 3%;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5%,高 于 100 万元时,超过 100 万元的部分按 1%提成,从键盘输入当月利润 I,求应发放奖金总 数? 38、 计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+ ⋯ ⋯ +1/(m*(m+1)), 当 m=50 时的结果(按四 舍五入保留 6 位小数)。(注:所有变量用 double 数据类型定义 )!答案: 1.480392 39、 程序填空:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析:利用 while 语句,条件为输入的字符不为 '\\n'. #include \"stdio.h\" #include \"conio.h\" main() { char c; int letters=0,space=0,digit=0,others=0; ... ... printf(\"please input some characters\\n\"); while((c=getchar())!='\\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') _________ else if(c==' ') _________ else if(c>='0'&&c<='9') _________ else _________ } printf(\"all in all:char=%d space=%d digit=%d others=%d\\n\getch(); } 40、 打印出如下图案(菱形) * *** ***** ******* ***** *** * 41、 求出 [2,478]以内的: (1)最大的素数。 (2)素数数目。 (3)所有素数之和。 42、已知: y N (ai i 1 2 b ) i ai *467 *91 *19580 i i 2 *1304735 ( i ) 为奇数 ) (i 为偶数 bi 2 i 3 i 为奇数 (i (i 为偶数 ) ) (1) (2) 若 N=10,求 Y 。 若 N=15,求 Y。 *1.184172E+07 2 n 43、 已X 知 : X y 1 X , 其中: X = 0.25, n = 1,2, ┅ , 求: 2 n (1) Y 值(精确到小数点后第5 位) (2) 与( 1)匹配的最小的 n *1.28767 *7 44、 以下程序输入三个整数值给a,b,c,程序把 b 中的值给a,把 c 中的值给b,把 a中的 值给c,交换后输出 a、b、c 的值。 例如: 读入后, a=10、b=20、c=30;交换后, a=20、b=30、 c=10。请填空。 ... ... #include <stdio.h> ... ... main() {int a, b,c,t; printf(\"Enter a ,b,c:\") ; scanf(\" %d% d%d\", ___); ___;a=b;___;___; printf(\"a= %d b=%d c=%d\\n\" ,a,b,c); } 45. 下面 fun 函数的功能是从 a 数组中查找值为 y 的元素;若找到,返回该元素的下标值, 若不存在值为 y 的元素, 返回 0;数列放在 a 数组的 a[1] 到 a[n]中,a[0]元素用来作为临时存 储单元。请填。空 fun(int a[],int y,int n) {int k=0; a[0]=y;k=n; while( return( } ) k--; ); 46、 /* 下列程序的功能是求出二阶Fibonacci 数列前 10 之和, 1,1,2,3,5,8⋯ 。请改正程序中 的错误,并运行修改后的程序,给出程序结 。果(注:只有一处错误!3 是第四项, 5 是第五 项。)*/ 答案: 143 #include long sum=0,a[30]={1,1,2}; int k; for( k=2;k<10;k++ ) a[k] = a[k-1]+a[k-2]; for( k=1;k<=10;k++ ) sum += a[k]; printf(\" %ld\\n\ } 47、 20,160] 之间的所有偶数的平方和。答案: 694380 48、 求[10,2000] 之间能被2 或 3 或 5 整除的数之和。答案: 67795 49、 求 800 以内的最大的 20 个素数之和。答案: 14510 50、求当 n=60 时下式的和: s=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+......+n) 五入保留 6 位小数)。答案: 1.967214 51、 编写程序:输入 x 的值,按照下列公式计算 cos(x) 246/2!+ x /4!- x /6!+... 精确到 cos(x)=1- -5 10。 x (按四舍 /*C 1 main() { int i; 1.717*/ ... ... long jc=1; float s=0; for(i=1;i<=5;i++) { jc=jc*i; s=s+1.0/jc; } printf(\"%f\} /*C 3 1533459*/ main() { long i,c=0,t=0,g,s,b,q; for(i=1001;i<=9999;i=i+2) { g=i%10; s=i/10%10; b=i/100%10; q=i/1000; if((g+s+b+q)%15==0) { c++; t=t+i; } } printf(\"%ld\} /*C 4 6591*/ main() { int i,s=0,c=0; for(i=700;i>=1;i--) if(i%13==0||i%17==0) { c++; s+=i; if(c==10)break; } printf(\"%d\ ... ... } /*C 5 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\} /*C 6 0.6180339850 */ main() { int i; double a=1; for(i=2;i<=20;i++) { a=1.0/(1+a); } printf(\"%.10lf\} /*C 7 90965*/ main() { long i,s=0; for(i=11;i<=1600;i=i+2) if(i%7==0) s=s+i; printf(\"%ld\} /*C 9 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\} /*C 10 143*/ main() { int c=0,i,j,p; for(i=100;i<=999;i++) { p=1; for(j=2;jif(i%j==0){p=0;break;} if(p==1)c++; } printf(\"%d\} /*C 11 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 13 61*/ #include\"fun.c\" ... ... main( ) { 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\} /*C 14 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 15 9*/ main() { int d,z,x,c=0; for(d=1;d<=17;d++) for(z=1;z<=25;z++) { x=30-d-z; if(x>=0&&d*3+z*2+x==50) c++; } printf(\"%d\ ... ... } /*C 16 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)break; printf(\"%d\} /*C 19 8658*/ main() { int i,s=0,w,j; for(i=1;i<=10000;i++) { w=0; for(j=1;jprintf(\"%d\} /*C 20 1323525*/ main() { long a[25]={1,2,1}; int i; for(i=3;i<25;i++) a[i]=a[i-1]+a[i-2]+a[i-3]; printf(\"%ld\} ... ... /*C 22 1.5707963166*/ #define N 24 main() { int i,j; double s=1,s1,s2; for(i=1;i<=N;i++) { s1=1; s2=1; for(j=1;j<=i;j++) { s1*=j; s2*=(2*j+1); } s+=(s1/s2); } printf(\"%.10lf\} /*C 23 49.395*/ main() { int i=1; double s=0; do { s+=(1+1.0/i); printf(\"\\n%0.3lf\i++; } while(s<50); } ... ... /*C 24 0.91*/ #include 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); printf(\"\\n%d,%.0lf/%.0lf\} printf(\"\\n%.2lf\} double jc(int i) { int j; double r=1; for(j=1;j<=i;j++) r*=j; return r; } /*C 25 135*/ #include long a,b,c; int xs=0; for(c=131;c<=200;c++) { xs=0; for(a=1;a ... ... xs=1; break; } } if(xs==1) { printf(\"%ld\break; } } } /*C 26 43*/ main() { int d=25; int x,y,z,max=0; for(x=1;x /*C 28 20*/ #include for(c=1;c<=50;c++) for(a=1;a /*C 30 */ #include double x1=1.0,x2; double a; scanf(\"%lf\while(1) ... ... { x1=1.0/2*(x1+a/x1); if(fabs(x2-x1)<=1e-5) break; else x2=x1; } printf(\"%lf\} /*C 35 67.223018*/ main() { double f(double x),s=0; int i; for(i=-30;i<=30;i++) s=s+f(i); printf(\"%lf\} double f(double x) { double y; if(x==0||x==2)y=0; else if(x>1)y=(x+1)/(x-2); else if(x<0)y=(x-1)/(x-2); return y; } /*C 38 1.480392*/ main() { double t=1; int m; for(m=2;m<=50;m++) t=t+1.0/(m*(m+1)); printf(\"%lf\} /*C 41 467,91,19580*/ #include\"fun.c\" ... ... main() { 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\} /*C 42 1304735*/ #define N 10 main() { 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\} /*C 43 7*/ #define X 0.25 #include double y=1,s=1.28767; int i; for(i=1;y<=s;i++) ... ... y=y+(double)pow(X,i)/i; printf(\"%d\} /*C 46 143*/ #include long sum=0,a[30]={1,1,2}; int k; for( k=2;k<10;k++ ) a[k]= a[k-1]+a[k-2]; for( k=0;k<=10;k++ ) sum += a[k]; printf(\" %ld\\n\} /*C 47 694380*/ main() { long i,s=0; for(i=20;i<=160;i+=2) s=s+i*i; printf(\"%ld\} /*C 48 1466295*/ main() { long i,s=0; for(i=10;i<=2000;i++) if(i%2==0||i%3==0||i%5==0) s=s+i; printf(\"%ld\} /*C 49 14510*/ #include\"fun.c\" main() ... { int i,c=0,s=0; for(i=800;i>=1;i--) if(prime(i)&&c<20) { c++; s=s+i; } printf(\"\\n%d\} /*C 50 1.967213*/ #define N 60 main() { int i; double s; for(i=1;i<=60;i++) s=s+1.0/((1+i)*i/2); printf(\"%lf\} /*fun.c 自定义函数判断素数int prime(int x) { int k; for(k=2;k ... */
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务