《C语言课后作业50(附参考答案).docx》由会员分享,可在线阅读,更多相关《C语言课后作业50(附参考答案).docx(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 .输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。#include main () intn,j;printf (”请输入一个正的五位数”);scanf(,&n);s 0=n%10;printf (,s0);s 1 = (n%100-s0)/10;printfs1);s 2 = (n%1000-s0-s1 ) /100;printf(八d”,s2);s 3 = (n%10000-s0-s1-s2 ) /100 0;printf(%d,s3);s4 = (n%100000-s0-s1-s2-s3)/10000;printf(,s4);printf (”输出逆转
2、后的5位数”);for (j=0;j fa !bf, fc fd fefz ff fh fif, fj/printf(”c”,m2);printf (请输入 l-10nn );scanf ( 7d,&q);t=q-l;printf (d 对应的字母是:%cnn , q, m t );)9 .个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些?#include#includemain ()inti;for (i=100;i1000;i + +)if (i%10=6)if (i%3=0)if (i%5!=0) printf(%dn,i);/printf ( dn,i);/con
3、tinue;.输入某年某月某日,判断这一天是这一年的第几天?#include/第十题#include main () inty,m,d;scanf(%d%d%d”,&y,&m,&d);if (y%4=0&y%100!=0|y%400=0) switch(m) printf (是今年的d 天n” , d);break;printf (是今年的d 天n,d+31);brak; printf (是今年的d 天n”,d+31 + 29);break;case3: printf (是今年的d 天n,d+31+2 9 + 31);break; printf (是今年的d 天n”,d+31 + 2 9 +
4、31 + 30);b工ak;case4: printf (是今年的d 天n,d+31+2 9 + 31 + 30 + 31);break;case?: printf (是今年的d 天n”,d+31 + 2 9 + 31 + 30 + 31 + 30);break;case8: printf (是今年的d 天n”,d+31 + 2 9 + 31 + 30 + 31 + 31 + 31);break; printf (是今年的d nn , d+31+2 9 + 31 + 30 + 31 + 31 + 31 + 31);break;cas10 :printf (是今年的d天nf d+31 + 29
5、+ 31 + 30 + 31 + 31 + 31 + 31 + 30);break;printf (是今年的d天nH,d+31+29+31+30+31+31+31+31+30+ 31);break;case11: printf (是今年的d天nf d+31+29 + 31 + 30 + 31 + 31 + 31 + 31 + 30+31+30);brak;else switch(m) easel: printf (是今年的d 天n,d);break; printf (是今年的d 天n,d+31);b工ak; printf (是今年的d 天n,d+31 + 28);break; printf (
6、是今年的d 天n,d+31 + 28 + 31);break; printf (是今年的d 天n”,d+31 + 2 8 + 31 + 30);break; printf (是今年的d 天n,d+31+28 + 31 + 30 + 31);break; printf (”是今年的d 天n”,d+31 + 28 + 31 + 30 + 31 + 30);break;printf (是今年的d 天n”,d+31+28 + 31 + 30 + 31 + 31 + 31);break;printf (是今年的d nf d+31 + 28 + 31 + 30 + 31 + 31 + 31 + 31);b
7、reak;cas10:2 .计算1 + 2 + 3+n的值,n是从键盘输入的自然数。#includemain () intn;inti;printf (请输入一个自然数:;scanf(d,&n);i=n*(n+1)/2;printf (输出1-n的自然数之和:%dn”,i);).从终端(键盘)读入20个数据到数组中,统计其中正数的个数, 并计算这些正数之和。#include#definenaxxlOmain ()(intsnaxx;intanaxx;inti=O;intj=0;intl=O;intsum=O;intk;printf (是今年的d天nH,d+31+28+31+30+31+31+3
8、1+31+30);break;cas11:printf (是今年的d天nn,d+31+28+31+30+31+31+31+31+30+ 31);break;cas12:printf (是今年的d天nf d+31 + 28 + 31 + 30 + 31 + 31 + 31 + 31 + 30+31+30);break;11.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队 为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不 和x,z比,请编程序找出三队赛手的名单。#includeintmain()chari;charj;chark;for (i=1
9、x1;i=1z1;i + +)(for (j = 1x1;j=!z1;j +)if(i!=j)for(k=1x1;k%cnb%cnc %c”,i, j , k);returnO;12.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2 岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说 比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一 个人,他说是10岁。请问第五个人多大?#includeintfac (intn);intmain()inta=5;printf(di5grnddsuishushi%dn”,fac(a);return。;intfac(intn)if (n=l
10、)returnlO;elsreturn2 + fac (n-1);13 .输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构成)。#include intmain()inta,b,c;printf(plasntrabcn);scanf (d%d%d”,&a,&b,&c);/ printf(dn%dn%dn,a,b,c);if(a+b=c)printf ( bunnggouchngsanjiaoxingn);Isif (a=b&b=c)printf(dngbiansanjiaoxingn);returnO;14 .输入10个数,分别统计其中正数、负数、零的个数。#in
11、cludeHstdio.hH main ()inta 10,i;sl = O;s2 = 0 ;s3=0;printf (”请输入 10 个数:nn);scanf(%d,&ai);for (i=0;i10;i+)sl + +;s2 + +;s3 + +;printf (”负数为d个,零为d个,正数为d个”,sl,s2,s3);15 .先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)#includen stdio.hH#includentime.hHmain ()inta,c,n;srand(unsignd)time(NULL);for (a=0;a=100&
12、c%3=0&c%5=0&c%7=0)printf(dn”,c);16 .用for编程找出100-200中的完全平方数。#include intmain()inti=10;intb;printf (请输入:”);for (i=0;inaxx;i + +) scanf(d,&si);)for (j=0;j0)a1=s j;sum+=a1;1+;)for (i=0;il;i + +)printf(%dn,ai);printf (输入数之和(111”,sum);)4 .从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制 到数组b中,并输出b中各元素的值。#include#definenaxx5m
13、ain ()inti=0;for (i = 10;i=15;i + +)b=i*i;if (b=200&b=100)printf(n%dnn fb);returnO;17 .从终端输入三个正实数,判断这三个数能否构成直角三角形。#includen stdio.hHmain ()inta,b,c;printf (请输入三个正实数:n”);scanf(d%d%d,&a,&b,&c);if (a*a+b*b=c*c)printf (这是直角三角形! nn );elseprintf (不构成直角三角形! n”);18.输入一行字符,分别统计出其中英文字母、空格、数字和其它 字符的个数。#include
14、intmain()into;intnword=0;intnspace=O;intnother=0;intnnum=0;while ( (c=getchar () !=EOF)if ( (c=a&c=1z1) | | (c= T 0&c=9)nnum+;elseif (c= T 1)nspac+;Isnothr+;printf(space:%dn,nspac);printf(num:%dn,nnum);printf(Hother:%dnH,nother);printf ( word:%dn”,nword);returnO;19 .输入一个字串,判断它是否是对称串。如abcdcba是对称串, 不是
15、。#includeintpanduan(charts);intmain()chars 500;printf(plasentrastring:n);panduan (s);returnO;intpanduan(charts)char*p=s;char*q=s;while(*q!=!01)q+;q-;while(q-p)1)if (夫p!=*q)printf(nbuduichen!nn);rturnl;p+;printf(HduichenH);returnO;20 .随机产生N个大写字母输出,然后统计其中共有多少个元音字符。(设N为50)#include#include#include#defin
16、eNlO intisyuan(chars);intmain()charsN;inti;intcount=0;charzimubiao = A,CJD, EJF, G,TH fI fJf, fK fLf, !M !N fO fPf, fQf, fR fS 1T,1 Uf , 1 V! , 1 W! , 1 X 1 Yf , ! Z 1 ;srand(tim(NULL);for (i=0;iN;i+)si=zimubiaorand()%2 6;for (i=0;iN;i+)printf(c,si);printf(”n);intk=0;intsnaxx;intanaxx;for (i=0;i0;i-
17、)aj=si-1;j+;printf(%dH,aj-1);)5 .要将5张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面值至少1张,编程求的需要多少张纸币。#include#definemoney500for(i=0;iN;i+)if(isyuan(si)count+;printf ( Hgongyouyuanyin%dgenH f count);returnO;intisyuan(chars)charyuanyinbiao = !A !E fI !0 !Uf ;for (j=0;j5;j +)if (s=yuanyinbiaoj)returnl;returnO;
18、21 .找出三位自然数中的所有素数,要求判断x素数用自定义函数data (x)实现。#includeintdata(intx);intmain()inti;for (i=100;i=999;i + + )if(data(i)printf(n%dshisushunn , i);returnO;/sushufanhuil,bushifanhuiO.intdata(intx)for (j=2;jx;j+)if ( (x%j)=O)return。;returnl;22 .输出n行由组成的矩形,每行的个数为m个,其中n、m 由终端(键盘)输入。要求输出m个功能由函数satr (m)函数 实现。#incl
19、udevoidsatr(intm);intm,n;intmain()printf(qingshurumndzhi:n);scanf(d,&m);scanf(d,&n);satr(m);return。;voidsatr(m)inti,j;for (i = 0;in;i+)for (j=0;jm;j +)printf(n#H);printf(n );23 .若ax2+bx+c=0有实根,则求之。#include#includmath.h intmain()floats,b,c,disc,xl,x2,p,q;scanf(a=%f,b=%f,c=%fH r &a,&b,&c);disc=b*b-4 *
20、a*c;if(disc0)printf(”miyoushigen);elsep=-b/(2*a);q=sqrt(disc)/ (2*a);xl=p+q;x2=p-q;printf ( nnxl=%5.2fnx2=%52fn”,xl,x2);returnO;.从键盘输入两个字串,判断它们是否相同。#include intpanduan(char*,char*);intmain()chars500;chart 500;printf(qingshurulianggzifuchuann);scanf(s,t);panduan(s, t);returnO;intpanduan(chartsA char*
21、t)whil(夫s! = 0)main ()inti,k;intj,1;printf (输出结果: n);for(i=50+(money%50);imoney;i+=50)for (j=20; (money%50=0)ji-15:j=i-15;j +=20)for (k=10;ki-j;k+=10)printf (n%d 张 50%d 张 2 0%d 张 10%d 张5n”,(money-i)/50,j/20,k/10,(i-j-k)/5);if (夫s+!=*t+)printf(nbuxiangtongnn );returnl;printf ( HbuxiangtongnH);rturnl;
22、Isprintf ( nxiangtongnn);rturn。;.从键盘输入两个字串,输出其中较短的那个字串,并输出它的长 度。2 6 .从键盘输入长度不等的两个字串,将短串连接于长串之后输出。27 .从键盘输入长度不等的两个字串,将长串连接于短串之后输出。 /*#include/M 25, 26, 27, 29题main () charsl100;chars2 100;inti=O;intj=0;printf (”请输入第1个字符串:nn);scanf (n%snA & sl i);printf (请输入第2个字符串:n);scanf (n%sf &s2 j);while (sii ! =
23、0) i + +; while (s2j ! = fOf) j+;if(ij) printf (长度短的是第一个字符串:%sn”,s2);printf (”长的的在前短的的在后组成一个字符串 是:s%sn”,sl,s2);printf (”短的在前长的在后组成一个字符串 是:%s%snn,s2,si);夫/28 .随机产生N个两位自然数,降序排列后输出。(设N为20) /*#includestdio . h/第 28 题随机数#include#includemain () inti,j,n,t,u,tt;inta20,b20;srand(unsigned)time(NULL);for (n=0
24、;n2 0;n+) t=rand()%90+10;an=t;/printf(,an);p=a; for (i = 0;i20;i+) for (j=i;j20;j+) tt=a i;ai=a j;aj=tt;/printf(%d,ai);printf ( dn,ai);/printf(dn,ai);.从键盘输入两个字串,输出其中较长的那个字串,并输出它的长 度。29 .从键盘输入10个战士的身高,输出平均身高,并找出哪些身高 低于平均身高。30 .从键盘输入10个战士的身高,输出平均身高,并找出哪些身高 高于平均身高。31 .从键盘输入10个战士的身高,输出最高、最低的身高。/*#includ
25、stdio . h/身高 303132 题#include#includemain () inti,j,tt,sum=0;intp;inta1000;printf (”请输入10个人的身高:nn);for (i = 0;i10;i + +) scanf (%d,&ai);/printf ( H%dnH,ai);for (j=0;j10;j+) sum=sum+aj;/printf ( %dn,sum);/printf(dn,sum);p=sum/10;printf (”平均身高是:dn”,p);for (i = 0;i10;i+) for (j=i;j10;j+ + ) tt=a i;ai=a
26、 j;aj=tt;/printf ( H%dH,ai);/printf ( %dn,ai);for (i = 0;i#includemain ()inti;intn=l;if(aip) printf (小于平均身高的是1口,己1);elseif (ai=p) printf (”等于平均身高的是(:111,己1);else printf (”大于平均身高的是(1口,己1);printf (最高的是dn”,a 0);printf (最爱的是dn”,a 9);夫/.百钱百鸡问题。百钱买百鸡,鸡翁一值钱三,鸡母一值钱二, 鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何?/*#include/M 33 题#in
27、clude#includemain () intxj,mj,gj,x,m,g;for (xj=0;xj100;xj+) for(mj=0;mj100;mj+)for (gj = 0;gj100;gj + +)if(xj+mj+gj=100)&(xj+mj *6+gj *9=300) printf (小鸡:%d 母鸡:%d 公鸡:dn”,xj , mj , gj );/x=xj;g=gj;m=mj;/printf (小鸡:%d 母鸡:%d 公鸡:dn”,x, m, g);夫/.有三个小孩,一个比一个大2岁,已知其年龄之和为39,问这三个小孩各几岁?/*#includa/年龄 34 题#inclu
28、dmath.hmain () into;c= (39-6)/3;printf (”年龄最小的是:d;年龄最大的是:d;另一个 是:dn,c,c+4,c+2);文/*#includestdio h/面积体积 35 题#include intchang,kuan,gao,v,s;changfangti(intchang,intkuan,intgao)/ints,v;/printf (”请输入长,宽,高:nn);/scanf(%d%d%d,Schang,&kuan,&gao);v=chang*kuan*gao;s= (chang*kuan+chang*gao+kuan*gao) *2;printf
29、(体积是:%d 表面及是:dn,v, s);main ()printf (请输入长,宽,高:nH );scanf (n%d%d%dn r &chang,&kuan,&gao);changfangti(chang,kuan,gao);35 .键盘输入长方体的长宽高1、w、h,求其体积及表面积。要求用 自定义函数val(l,w,h)计算长方体的体积和表面积,计算结果使 用全局变量带回主函数。/*#include/面积体积 35 题#includeintchang,kuan,gao,v,s;changfangti(intchang,intkuan,intgao)/ints,v;/printf (请输
30、入长,宽,高:n”);/scanf(%d%d%d,&chang,&kuan,&gao);v=chang*kuan*gao;s= (chang*kuan+chang*gao+kuan*gao) *2;printf (体积是:%d 表面及是:dn,v, s);main () printf (请输入长,宽,高:nH );scanf (d%d%d”,&chang,&kuan,&gao);changfangti(chang,kuan,gao);*/36 .计算:1/2 + 1/4+l/n,设n是由键盘输入的正偶数。/*#include/36 偶数#includemain () doublen;doubl
31、esum=0;printf (请输入偶数n=);scanf (,&n);while ( (n-2)-l)/doublesum=0;sum=sum+(1/n);n=n-2;/printf(%lfn”,sum);printf (偶数之和是:lfn”,sum);夫/37 .计算:1/1 + 1/3+l/n,设n是由键盘输入的正奇数。#include/37 奇数#include main () doublen;doublesum=0;printf (请输入奇数数n=);scanf (,&n);while(n-2)-2)/doublsum=0;sum=sum+(1/n);intsum=O;printf
32、(输入个21的数:“);scanf(d,&n);if (n21)n;for (;n=21;n)if(n%3=0&n%7=0)printf ( 八d”,n);sum+=n;n=n-2;/printf(%lfn,sum);printf (奇数数之和是:%lf nn , sum);38.计算:1/2-2/3 + 3/4-4/5,前100项。/*夫tst38c*Createdon:2011-4-25*Author:sky*/#includemain () inti;floatrsult=0,d=l;for(i=l;i10;i+)result+=i*d/(i+1);d=-d;printf ( n%f11
33、 f result);/printf ( Haann);)printf (结果是:%fnH , result);39.有一个数组1,4,80,23,47,76,14,52。现输入一个数,要求按原来的规律将它插入数组中并从大到小输出/*39.c*Cratdon:2011-4-28*Author:ocean#includemain () inta8=1,4,80,23,47,76,14,52);inti,j,t=0,tl=0,num;for(i=0;i8;i + +) for (j=i;j8;j+) if) ai=t;for (i=0;i8;i+) printf(%d,ai);printf (输入
34、要插入的数:n);scanf(d,&num);for(i=0;i8;i+)if(ainum)t=a i;ai=num;printf(dn,t);for(j=i+l;j=8;j+)tl=a j;a j=t;t=tl;brak;putchar(1n1);for (i=0;i8;i+) printf(d”,ai );putchar(1n1);40.公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃 贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公 安人员的问题中:甲说乙没有偷,是丁偷的,乙说、我没有偷,是 丙偷的,丙说、甲没有偷,是乙偷的,丁说我没有偷。请根据这 四人的答话判断谁是
35、盗窃者。#includemain () charsteal=1A1;intflag=0;for(stal;,D,stal+)flag=(steal!=1B1)=(steal=1D1)+(steal!=1B)=(steal=f) + (steal! = 1A1)=(steal=1B1) + (steal!= D,);if (flag=4) printf(%cn,steal);)41 求 s=a+aa+aaa+aaaa+aaa 的值, 其中 a 是 19之间的一个数字,表达式项数从键盘输入(设不超过10项)。例如 2+22 + 222+2222+22222 (此时共有5个数相加),几个数相加由键
36、盘控制。/test41c*Cratdon:2011-4-27*Author:sky*/#includemain () inta10;p=a;inti,numl, num2, sum;sum=0;printf (”请输入基数:nn );scanf(H%dH,Snuml);printf (请输入项数:nn);scanf&num2);*p=numl;for(i=0;inum2;i+)/夫(p+i+1)i*10+numl;* (p+i + 1)=*(p+i)*10+numl;printf(%dt,夫(p+i);sum+=*(p+i);printf (和等于dn”, sum);42 .设N是一个四位数,
37、它的9倍恰好是其反序数,求N。反序数就 是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。 /*42.c*Cratdon:2011-4-28Author:ocan/#includei=sqrt(sum);printf(n);else printf (输入错误:nH ) ; 7 .一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但 都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字 是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙 是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线 索找出车号。#include main ()main ()
38、intn=O,m=0;for (n=10000;n=1000;n-) m=n* 9;if( (n%10=m/1000)&(n/10%10=m/100%10)&(n/100%10=m/10%10)&(n/1000=m%10)printf(dt%dn”,n,m);43 .爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶, 则最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯至少有多少阶?/*43.c*Createdon:2011-4-28*Author:ocean*/#includemain ()
39、inti;for (i=0;i+=7) if (i%2=l&i%3=2&i%5=4&i%6=5&i%7=0) printf(dnn“,i);break;44.输入任意一行字符,降序排列之。*44 .c*Creatdon:2011-4-28*Author:0can#inclucstdio.h main () chara1000;char*p=a;char*q;/swapchartemp;printf (输入一个字符串:n );scanf(s,p);for(;*p!=0;p+)if(*p*q)temp=*q;*q=*p;*p=temp;printf(s,a);45.输入一行字符串,按如下规则加密:如果是英文字母则大写变小写、小写变大写,对非英文字符则保持不变。试写加密程序。/夫*Cratdon:2011-4-28*Author:ocan*/#include main () chara1000;char*p;p=a;printf (输入字符串:nn );scanf(,p);for(;*p!=fOf;p+)if (夫p=,A,&*p=1 a!&*p=1z1) *p_=32;)printf ( unn 力口密后:sn,a);)46 .输入一行小写英文字母,按如下规则加密:a-c、b-d、x-z、 y-a、zb,试写加密程序。/ *
限制150内