C语言50道例题答案_第1页
C语言50道例题答案_第2页
C语言50道例题答案_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、50道 C 语言例题答案1. 键盘上输入 n 个数, 输出最大值最小值 .# include stdio. h># define M 30main() int aM, n, i, max, min;printf C 请输入 n (n<%d) : , M); scanf("%d, &n);printf ( 请输入这 %d 个数: n, n); for(i=0;i<n;i+) scanf("%d, &ai);max=min=a0;for (i=0;i<n;i+)if (ai>max) max=ai; for(i=0;i<n;i

2、+)if (ai<min) min=ai; printf ( 这d个数中最大的数为:%dnz , n, max); printf ( 这d个数中最小的数为: %dn,z, n, min);2. 求这样一个三位数,该三位数等于其每位数字的阶乘之和。 #include<stdio. h> int fab(irrt n) int i, j 二 1;for (i=l;i 二 n;i+)j 二 j*i ;return j;main() int i, si, s2, s3;for (i 二 100;i<999;i+)si 二 i/100;s2 二(i-sl*100)/10;s3二

3、i%10;if (i= (fab (sl)+fab (s2)+fab (s3) printf("the number is:%dn, i); 3?有一分数序列 : 2/1, 3/2, 5/3, 8/5, 13/8, 21/13.求. 出这个数列的前 20 项之和# includestdio. h> main() int n;float t=0 ,s=2, k=l,m; for(n=l;n<=20;n+) t 二 t+s/k; m=s; s=s+k;k=m;printf ( fn, t);4?输入整数N,求N的阶乘# include stdio. h> main()i

4、rrt n, i, s=l;printf (请输入您要计算的数 n: ); scanf( d, &n); for(i=l;i<=n;i+)s 二 s*i;printf C%d! =%dnzz, n, s);5 ?输入一串正整数,倒序输出# includestdio. h># define M 100 main() int i, j;char aM;printf ( z请输入一列数字:n );for (i=0; i<M; i+)scanf(c", &ai);if(ai=' n )break;printf (则该列数字倒序输出为: );for(j

5、=i; j>=0; j )printf (c", aj);printf( n");6. 求100X00000之间所有数字之和为5的整数的个数# includestdio. h>main() long int i, al, a2, a3, a4, a5, j=0;for(i=100;i<100000;i+) al=i/10000; a2=(i-al*10000)/1000; a3=(i-al*10000-a2*1000)/100; a4=(i-al*10000-a2*1000-a3*100)/IO; a5=i-al*10000-a2*1000-a3*100-

6、a4*10;if(al+a2+a3+a4+a5=5)j=j+l ; printfC 整数 100至 100000之间所有数字之和为 5 的整数的总个数 为:ldn",j);7. 输入字符串,打印除小写元音字母之外的。# include stdio. h>ftdefine M 100main() irrt i,n;char aM;printfC 请输入一列字符串: ) ;for (i=l; i<M; i+)scanf (z %c z, &ai);if (ai= =, n ) break;printfC 则该列字符串中去除小写元音字母后输出为: ) ; for(n=l

7、;n<=i;n+)if (an !=97)&(an !=101)&(an !=105)&(an !=111)&(an !=117) printf an); 8. 从键盘输入 10 个整数,计算其中偶数的和以及偶数平均数,( 用小数表示)# include stdio. h>main() int i, a10;float s, j=0, k=0;printf (请输入 10 个数: n);for(i=0;i<10;i+)scanf ("%d", &ai);for(i=0;i<10;i+) if(ai%2=0)j=

8、j+ai;k=k+l;s=j/k;printf (,z这10个数中偶数和为:%1. 0fn这10个数中偶数的平均值为: %5? 5fn,j, s);9. 从键盘输入 10 个整数,计算其中奇数之和以及奇数的平均数,(用小数表示 )# include <stdio. h>int main() int i, a10;float s, j=0, k=0;printf (请输入 10 个数: rT);for(i=0;i<10;i+)scanf ("%d", &ai);for(i=0;i<10;i+)if(ai%2! 二 0)j=j+ai;k 二 k+

9、1;s=j/k;printf f这10个数中奇数和为:%1.0fn这10个数中奇数的平均值 为:%5 ? 2fn , j, s);return 0;10. 循环语句求S=a+aa+? ? ? +aaa? ?的值,其中a是一个数字n由键盘输入# include <stdio.h>main()int a, n, i;long irrt s, t;printf (,z请输入 a(a<10): ); scanf ( %d, & a);printf C 请输入 n: « );scanf( d", &n);t=s=a;printf ( %d , a);

10、for(i=l;i<n;i+) t=t*10+a; printf ( +%ld, t);s=s+t;printf (/z=%ldn z, s);11?求 1 !+2!+3!+?+n!# include <stdio. h>int fac(int x)int s=l, m;for(m=l;m<=x;m+)s 二 s*m;return (s);main() long int n ,j,sum=0;printf (请输入 n: ) ; scanf( %d , &n);for(j=l; j<=n; j+)sum=sum+fac(j);printf( ldn, su

11、m);12. 输出满足以下条件的最大的 n: l2+22+32+-+n2<=1000 ttincludestdio. h>main()int i, s;for (i=l, s=0;s<=1000;i+)s 二 s+i*i;if(s>1000) break;printf("%dn", il);13. 01000同时被 7 和 13整除的数#include<stdio. h>main()int i;printf COMOOO 中同时能被 7 和 13 整除的数为:n);for(i=0;i<=1000;i+)if(i%7=0)&&

12、amp;(i%13=0) printf("%5d", i); printf( n );14. 1/1,1/3,1/5,1/7,1/9,1/11 的前 20 项之和,并输出。#includevstdio. h>main()float s, i, t;for(i=0, s=0, t=l;iv20;i+)s=s+l/t;t=t+2;printf ( fn", s);15. 求s=l-l/3+l/5-1/7+,直到最后一项的绝对值小于0. 00001为止。#includevstdio. h>void mainO double sl=0, s2=0, s, i;

13、for (i=0; K10000; i+)if (1/(4*i+l)v0. 00001)break;sl=sl+l/(4*i+l);if(l/(4*i+3)v0. 00001)break;s2 二 s2-l/(4*i+3); s=sl+s2;printf (/z%lfn z , s);16. 用公式el+l川+1/2!+1/3!+ ?+l/n!,求e的近似值,直到l/n!<10-6为止#includevstdio. h>#includevmath. h>void main()double fac(double a);double i,t=l;for (i=l;i+)if (l

14、/fac(i)<0. 000001) break;t=t+l/fac(i); printf ( %fn", t); double fac(double a) int i; double t=l;for (i=0;i<a;i+) t=t*(ai); return (t);17. 用Ji /4=l-l/3+l/5-l/7 +公式请求n的近似值,直到某一项的绝对值小 10" 为止。#include<stdio. h> void mainO double sl=0, s2=0, s, i;for (i=0;i<10000;i+) if( (1/(4*i

15、+l)<0. 0000011 | (1/(4*i+3)<0. 000001) break;si 二 sl+l/(4*i+l);s2二 s2-l/(4*i+3); s=sl+s2;printf ( lfn , 4*s);18. 输出 PIO 的阶乘值 ttinclude <stdio. h> double fac(double x) double s, k;for (s=l, k=l; s二 x; s+) k=k*s;return k; main() double i;for (i 二 l;i=10;i+)printf (%1? Of !=%1. Ofn, i, fac(

16、i) ;19? 输入正数,判断是否是素数 ttinclude stdio. h>int prime(int x)int flag=l, i;for (i=2;i<x/2&&flag=l;i+) if(x%i=0) flag=0; return flag;main()int w;scanf ( d, &w);if (prime (w)printf( %d is a primeXn" w);elseprintf( d is not a primen , w);20 ?求 1+ (1+2) + (1+2+3) +?+(l+2+?+n)# includes

17、tdio. h>int sum (int x)int i,j=0;for (i=l;i 二 x;i+)j=j+i ;return (j);main()int n, p, s=0;prirrtf("input n: );scanf ( %d , &n);for (p=l;p=n;p+)s=s+sum(p);prirrtf ( %dn", s);21 ?输入年月,输出该月有多少天。ttinclude <stdio. h> main()int a213 = 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31

18、,0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; int y, m, i;printf("Please input the year: ) ; scanf ( d,&y);printf("Please input the month: ); scanf ( %d , &m); i=(y%4=0)&&(y%100!=0) | | (y%400=0); printf( this month has %d daysn , aim);22.编一个计算器,可以计算“+” “-”“/ ”ttinclu

19、destdio. h>main()int al, a2;char op;printf( sign:n ); scanf( %c , &op);printf ( no. 1: n ) ; scanf ( %d , & al);printf ( no. 2: n ) ; scanf( d,&a2);switch(op)case ' +' :printf ( %d+%d=%dn, al, a2, al+a2); break;case ' -' :printf ( %d-%d=%dn, al, a2, ala2); break;case &

20、#39; *' : printf ( d*%d 二 dn, al, a2, al*a2); break;case ' /' : printf ( %i/%d 二dn , al, a2, al/a2) ; break; default:printf(Awrongj; 23?求 555555的约数中最大的 3 位数: 777#includestdio. h> main()int a1000, n=555555, i, j, k=0, w, t; printf (z, 555555 的约数如下: n ); for (i=100;i<1000;i+)j=n%i;if

21、(j=O)ak=i;printf( %5d , ak);k=k+l;t=a0;printf ( zn 则其中最大的约数为:n " ) ; for (w 二 1 ;w k;w+)if (aw>t) t=aw;24. 韩信点兵:士兵 5 人一行,末行一人; 6 人一行,末行 5 人; 7 人一行,末 行 4人,11 人一行,末行 1 0人。求士兵人数 11: 2111#include<stdio. h>main()int s=ll, i=l;wh 订 e(i=l) /* 由于不知具体循环次数,故使用 wh 订。型 */s+;if(s%5=l) && (s

22、%6=5) && (s%7=4) && (s%l l=10)printf (dn,s);i=0; /* 此处 i 二 0*/ 25. 爱因斯坦阶梯问题 (119)#include<stdio. h>main()int s=ll, i=l;wh订e(i=l) /*由于不知具体循环次数,故使用 wh订e型*/s+;if(s%2=l)&&(s%3=2)&&(s%5=4)&&(s%6=5)&&(s%7=0) printf ( %dn , s);i=0; /* 此处 i 二 0*/ 26. 输入

23、m, n 求其最小公倍数 ttincludestdio. h> int num(int u,int v)int r; while(r=u%v)!=0) u=v;v=r; return(v); main() int i, j, t;printf (z,请输入两个数:); scanf ( d%d,&i, &j); if (i<j) t=i;i=j; j=t;printf (z,则这两个数的最小公倍数为:dn,i*j/num(i, j);27, 输入两个数并求其最大公约数。 Winclude <stdio. h> int num(irrt u, int v)i

24、nt t, r; if(v>u)t=u;u=v;v=t; w"le(r=u%v) ! =0)u=v;v=r;return(v); main() int i, j; printf C 请输入两个数: ) ; scanf ( d%d, &i, &j); printf C 则这两个数的最大公约数为 :%dnz , num(i, j);28?输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数 #includestdio. h> main () int i, j;int e=0, b=0, c=0, d=0; char a100;printf (z,请输入

25、一列字符串:n );for (i=0;i<100;i+)ai=getchar ();if (ai =, n )break; for(j=0;j i;j+) if(aj>=65&&aj<=88) | |(aj>=97&&aj<=122) e+; else 辻(aj>=48&&aj<=57) C+; else if(aj=, ') b+;else d+;printf C 该行字符串中空格个数为 :%dnz, , b); printf C 该行字符串中数字个数为 :dn , C); printf C 该

26、行字符串中英文字母个数为 :dn , e);printf C 该行字符串中其他字符个数为: drT, d);29. 输入十个数,将其排序#include<stdio. h> main()int a100, i, j, t, n;printf ( 请输入 n: ) ; scanf ( %d, &n);printf ( 请输入这 d 个数:,n); for (i=O;i<n;i+)scanf( d, &ai) ;for(i=O;i<n-l;i+)for(j=O;j<n-l-i;j+)if (aj>aj+lj) t=aj ;aj=aj+l ;aj+

27、l=t;printf (" 则这%(3 个数按照从小到大的顺序排列为: n", n); for(i=O;i<n;i+) printf("%dn", ai) :30. 输出100200之间的素数# includestdio. h>int prime(int x)int flag=l, i;for (i=2;i<x/2&&flag=l;i+)if(x%i=0) flag=0;return flag;main()int i, j=0;printf C100到200之间的素数有:n"); for(i=100;i<

28、201;i 卄)if (prime (i)printf("%d ”i,);j=j+l;if(j%10=0)printf("n");31 题:由 36块砖,男人一次可以搬 4块,女人一次可以搬 3块,2个小孩一次 可以搬一块,问男人女人小孩各需多少人可以一次性将砖搬完? (3男,3女, 30小孩)ftincludestdio. h>main()int d, z, x;for(d=l;d9;d+) for(z=l;z<=(36-4*d)/3;z+)x=36-d-z;if (4*d+3*z+0. 5*x=36)printf ("%d(男) d (女

29、) d (小孩 n", d,乙 x);32题:输入一个字符串,将其正序反序输出?# include <stdio. h># define M 100main() int i, j;char aM;printf (,z请输入一列字符串:n ); for(i=0;i<M;i+)scanf(c,&ai);if (ai= n )break;printf (则该列字符串倒序输出为: );for(j=i; j>=0; j )printf ( c,aj);printf( n );33 题:输入一行字符,统计以空格间隔的的单词个数# includestdio. h&g

30、t;main()int i, n, 1=1;char a100;printf (请输入一行字符串: n );for (n=0,i=0;n<100;n+, i+)ai=getchar0;if (ai= =, n, )break;for (n=0;n<i;n+)if (an =- ')1+;printf ( 则行字符串共有d个单词。n , 1);34题:输出一个十进制数,将其转化为一个 2进制数输出? #includestdio. h> main()int n, x=0, a100;printf (z,请输入一个数字:n);scanf ( %d , &n);whi

31、le( n)ax+=n%2;n=n/2;x;printf C 则该数字的二进制表示为: n);while( x>=0)printf ( %d , ax- ) ;printf( n);35题:水仙花数,输入一个三位数,该三位数各位数字立方和等于该数本身? # include stdio. h> int cube (int x) return (x*x*x); main() int i, g, s, b;for(i=100;i<1000;i+)b 二 i/100;s 二( i-b*100)/10;g=i%10;if (cube(g)+cube(s)+cube(b)=i) prin

32、tf ( dn, i);36题:求从 3开始到小于 100 的所有双素数 ? #include<stdio. h> irrt prime (irrt x) int flag=l, i;for (i=2;i<x/2&&flag=l;i+) if(x%i=0) flag=0; return flag; main()int n;for (n=3 ;n<99; n 卄 )if (prime (n)&&prime (n+2) printf ( d/%dn, n, n+2);37 题:求两位绝对素数 #include<stdio. h>

33、int prime(int x)int flag=l, i;for (i=2;i<x/2&&flag=l;i 卄) if(x%i=0) flag=0;return flag;main()int t, w, g, s;for (t=10;t<100;t+)g=t%10; s=t/10; w=g*10+s; if(prime(t)&&prime(w) printf ( dn", t); 38题:100X50之间整除3,每行输出5个数?#include<stdio. h>main()int i=100, j: for(j=0;i<

34、;=150;i+)if(i%3=0) if(j%5=0)printfCn / ,);j+;printf("%3d”,i);39题:对 10个整数排序,输出 10 个数并按升序排序#include<stdio. h>main()int a100, i, j, t, n;printf (" 请输入 n:");scanf("%d", &n);printf (" 请输入这 %d 个数 :", n); for(i=0;i<n;i+)scanf("%d", &ai) ; for(i=

35、0;i<n-l;i+) for(j=0;j<n-l-i;j+)if(aj aj+l)t=aj;aj=aj+l;aj+l=t;printf (" 则这%(3个数按照从大到小的顺序排列为: n", n); for(i=0;i<n;i+) printf("%dn", ai) : 40题:建立一个3*4的二维数组(3x4矩阵)求所有元素中最大值?【或求最 小 值,本题给出的是最大值】#include<stdio. h>main()int a 100 100, max, i, j, m, n;printf (" 请输入该数组

36、的行数: ") ;scanf("%d", &m);printf (" 请输入该数组的列数: ") ;scanf("%d", &n);printf (" 请输入该数组的 d 个元素: ”m,*n);for(i=0;i<m;i+)for(j=0;j<n;j+)scanf("%d", &aij);printf C 则该数组为: n");for(i=0;i<m;i+)for(j=0;j<n;j+)printf (4d, ai j);printf

37、( n);max=aO0;for (i=0;i<m;i+)for(j=0;j<n;j+)if (ai j>max)max=ai j; , ,printf (z,该数组中最大的数为:dn,z, max);41题:求一个整数在存储单元中,从右端开始第 4到第 7位的值? #include<stdio. h>main()int e;unsigned a, b, c, d, num;printf C 您可以转换八进制、十进制和十六进制的数字n); printf C 请输入您想转换的数字类型( & 10 或 16) :n); scanf ( %d, &e);

38、if (e=8)printf (请输入该八进制数字: n);scanf ( %o, &num) ;else if (e=10)printf (请输入该十进制数字: n);scanf( %d, &num ) ;else if (e=16)printf (请输入该十六进制数字: n);scanf(%x, &num ) ;a=num?4;b=(04);c=a&b;printf (z,转换后的数字,八进制输出为: on , c);printf (z,转换后的数字,十进制输出为: dn , c);printf ( z 转换后的数字,十六进制输出为: 0xn , c) ;4

39、2题: 100 匹马驮 100袋货,一匹大马可驮 3袋,一匹中马可驮 1袋,两匹小马 可驮一袋,求大中小马的个数ftinclude <stdio. h>main()int d, z, x;for( d=l;d<=33;d+)for ( z=l;z=( 100-3*d ) /2;z+)x=100-d-z;if (3*d+2*z+0 ? 5*x=100)printf ("大马 d匹 中马 d匹 小马 d匹11 , d,乙x)汀43题:将一元钱分成一分、二分、五分的,共有多少种分法ttincludestdio. h>main()int d, z, x, i=0; f

40、or(d=0;d<=20;d+)for(z=0;z<=50;z+)for(x=0;x<=100;x+)if(5*d+2*z+x=100)i+;printf( dn , i) ; 44题:求一个四位数,它的 9 倍为其反序数 ( 答案: 1089) ttincludestdio. h> main()int g, s, b, q, i, t;for(i=1000;i<10000;i+)q=i/1000;b=(i-q*1000)/100;s= (i-q*1000-b*100)/10;g 二 i%10;t=i*9;if (g*1000+s*100+b*10+q=t)pri

41、ntf ( /z%dnz,, i);45题:斐波那契序列:1, 1,2, 3, 5, 8,13n,求第n项的值fti nclude stdio. h># define M 500main()long int aM;int n, i; printf("Please input n:) ; scanf ( %d, &n);a0=l;al=l;/printf Cl 1 ); 输出n项斐波那契数列(需用代码1) for(i=2;i<n;i+)ai=ai-l+ai-2;/printf ( %3d , ai); 输出n项斐波那契数列(需用代码2)printf (,zn%ldn

42、,z, ail);46题:求双素数,输入一个素数,将其分成两个素数之和 ttinclude <stdio.h> int prime(int x)int flag=l, i;for (i=2;i<x/2&&flag=l;i+)if(x%i=0) flag=0;return flag;main()int j, k,t;printf ( 请输入一个偶数 n (n>4): );scanf(d,&j);printf C 则其可分解为一下各两个素数之和 : n );for (k=5;k<=j-k;k+)t 二 j-k;if (prime (t)&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论