


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. 1【C语言】C语言程序设计教程(第二版)习题答案说明本文所指的C语言程序设计教程(第二版)是李凤霞主编、北京理工大学出版社出版的,绿皮。2第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC5-8.DACA二、填空题(第24页)判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分三、应用题(第24页)1. 源程序:main()(inti,j,k;/*i:公鸡数,j:母鸡数,k:小鸡数的1/3*/printf("cockhenchickn");for(i=1
2、;i<=20;i+)for(j=1;j<=33;j+)for(k=1;k<=33;k+)if(i+j+k*3=100&&i*5+j*3+k=100)printf("%d%d%dn",i,j,k*3);执行结果:2. cockhenchick418788118112484现计算斐波那契数列的前20项。递推法源程序:main()longa,b;inti;a=b=1;for(i=1;i<=10;i+)/*要计算前30项,把10改为15。*/printf("%8ld%8ld”,a,b);a=a+b;b=b+a;递归法源程序:main
3、()inti;for(i=0;i<=19;i+)printf("%8d",fib(i);fib(inti)return(i<=1?1:fib(i-1)+fib(i-2);执行结果:3. 11235813213455891442333776109871597258441816765源程序:#include"math.h"main()doublex,x0,deltax;x=1.5;dox0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;while(deltax>1e-12);printf("%.10fn
4、",x);执行结果:4. 1.3247179572源程序略。(分子、分母均构成斐波那契数列)结果是32.66026079864源程序:main()inta,b,c,m;printf("Pleaseinputa,bandc:");scanf(wd汶d汶crQOaQObQOc)*一f(aAb)3na用一f(aAC)3na用coHmp一f(bAC)3H9bHCoHmpprm_f(wd汶d汶d-rraboE1圭汨-p-easempufaaandc-_k23456789789456_k237.W部ma-n()Ma*scanfcwcrQOa)*prm_f(awN#02=Yes
5、,=NO=)01圭汨-42Yes1#-一、单项选择题(第34页)1-4.BDCB5-8.AABC二、填空题(第35页)主2.C编译系统3.函数函数4.输入输出5.头6.OBJ7.库函数8.文本三、应用题(第36页)5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。8.源程序:main()inta,b,c;scanf("%d%d",&a,&b);c=a;a=b;b=c;printf("%d%d”,a,b);执行结果:1. 123434124第3章数
6、据类型与运算规则一、单项选择题(第75页)1-5.DBACC6-10.DBDBC11-15.ADCCC16-20.CBCCD21-25.ADDBC26-27.AB二、填空题(第77页)补码2.士(10白30810八308)3.int(整数)4.单目白右相左5.函数调用6.a或b7.18.65,89三、应用题(第78页)1.109执行结果:1. 11001215第4章顺序结构程序设计一、单项选择题(第90页)1-5.DCDAD6-10.BACBB二、填空题(第91页)1.一;2.5.1690003.(1)-2002500(2)I=-200,j=2500(3)i=-200j=25004.a=98,
7、b=765.000000,c=4321.0000005.略6.0,0,37.38.scanf("%lf%lf%lf",&a,&b,&c);9.1313.000000,13.00000010.a=aAc;c=cAa;a=aAc;(这种算法不破坏b的值,也不用定义中间变量。)三、编程题(第92页)仿照教材第27页例2-1。2. 源程序:main()(inth,m;scanf("%d:%d",&h,&m);printf("%dn”,h*60+m);执行结果:3. 9:23563源程序:main()(inta=(
8、-10,0,15,34,i;for(i=0;i<=3;i+)printf("%d370C=%g370Ft",ai,ai*1.8+32);执行结果:4. -10C=14F0C=32F15C=59F34C=93.2F源程序:main()(doublepi=3.14159265358979,r=5;printf("r=%lgA=%.10lfS=%.10lfn”,r,2*pi*r,pi*pi*r);执行结果:5. r=5A=31.4159265359S=49.3480220054源程序:#include"math.h"main()(doublea
9、,b,c;scanf("%lf%lf%lf",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)(doubles=(a+b+c)/2;printf("SS=%.10lfn",sqrt(s*(s-a)*(s-b)*(s-c);elseprintf("Dataerror!");执行结果:6. 56SS=9.9215674165源程序:7. main()(inta=3,b=4,c=5;floatd=1.2,e=2.23,f=-43.56;printf(
10、"a=%3d,b=%-4d,c=*%dnd=%gne=%6.2fnf=%-10.4f*n",a,b,c,d,e,f);源程序:main()inta,b,c,m;scanf("%d%d%d”,&a,&b,&c);m=a;a=b;b=c;c=m;printf("%d%d%dn",a,b,c);执行结果:8. 6775源程序:main()inta,b,c;scanf("%d%d%d",&a,&b,&c);printf("averageof%d,%dand%dis%.2fn”
11、,a,b,c,(a+b+c)/3.);执行结果:9. 679averageof6,7and9is7.33不能。修改后的源程序如下:main()inta,b,c,x,y;scanf("%d%d%d",&a,&b,&c);x=a*b;y=x*c;printf("a=%d,b=%d,c=%dn",a,b,c);printf("x=%d,y=%dn",x,y);6第5章选择结构程序设计一、单项选择题(第113页)1-4.DCBB5-8.DABD二、填空题(第115页)1.非002.k=03.if(abs(x)>4
12、)printf("%d”,x);elseprintf("error!”);4.if(x>=1&&x<=10|x>=200&&x<=210)&&x&1)printf("%d",x);k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。)8!Right!117.$a=08.a=2,b=1三、编程题(第116页)1.有错。正确的程序如下:main()墨后->><-UD()u一BE汶-wu'szdr+XH>(obvx0303gHAX)M一-v
13、xnmgvxoaoaOHAM一xnmovxoaoaglAM一-(XO3-P汶-mueos->><-UD()u一BEwi安OHxob汶5-p汶-WUE务)£奇叫-PM-msos66UO-PCDU6一Sun)()u一BE(奇oZOA&qoSAqzqA5-5p汶Hu一E-wu'szdiy叫qoaCTf叫-ppp汶-muraosodCTf-UD(3) scanf("%d”,&x);if(x<10)if(x>-5)if(x>=0)if(x>=5)y=x+1;elsey=x-1;elsey=x;printf("
14、%dn",y);源程序:(4) main()intx,y;scanf("%d",&x);if(x<10)if(x>=5)y=x+1;elseif(x>=0)y=x-1;elseif(x>-5)y=x;printf("%dn",y);源程序:main()intx,y;scanf("%d",&x);switch(x/5)case-1:if(x!=-5)y=x;break;case0:y=x-1;break;case1:y=x+1;printf("%dn",y);本题为了
15、避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。现给出Delphi源程序和C+Builder源程序。Delphi源程序:procedureTForm1.Button1Click(Sender:TObject);beginedit3.Text:=format('%.0f天',strtodate(edit2.text)-strtodate(edit1.text);end;procedureTForm1.FormCreate(Sender:TObject);beginEdit2.Text:=datetostr(now);button1click(form1)end;C+Bu
16、ilder源程序:4. void_fastcallTForm1:Button1Click(TObject*Sender)Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text)+"天"void_fastcallTForm1:FormCreate(TObject*Sender)Edit2->Text=DateToStr(Now();ButtonlClick(Forml);执行结果:(运行于Windows下)main()unsigneda,b,c;printf("请输入
17、三个整数:");scanf("%d%d%d”,&a,&b,&c);if(a&&b&&c&&a=b&&a=c)printf("构成等边三角形n");elseif(a+b>c&&a+c>b&&b+c>a)if(a=b|a=c|b=c)printf("构成等腰三角形n");elseprintf("构成一般三角形n");elseprintf("不能构成三角形n");执
18、行结果:5. 请输入三个整数:565构成等腰三角形源程序:6. main()intx,y;scanf("%d”,&x);if(x<20)y=1;elseswitch(x/60)(case0:y=x/10;break;default:y=6;printf("x=%d,y=%dn”,x,y);源程序:main()(unsignedm;floatn;scanf("%d",&m);if(m<100)n=0;elseif(m>600)n=0.06;elsen=(m/100+0.5)/100;printf("%d%.2f%
19、.2fn”,m,m*(1-n),m*n);执行结果:450450429.7520.252171天(起始日期和终止日期均算在内)本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。源程序:#include"math.h"main()(unsignedlongi;scanf("%ld",&i);printf("%ld%dn",i%10,(int)log10(i)+1);执行结果:7. 9988775源程序:main()(unsignedlon
20、gi;unsignedj10,m=0;scanf("%ld",&i);for(;i;)(jm+=(i+2)%10;i/=10;for(;m;m-)i=i*10+jm-1;printf("%ldn",i);执行结果:69878109(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)7第6章循环结构程序设计1. 一、单项选择题(第142页)1-4.BCCB5-8.CBCA二、填空题(第143页)原题可能有误。如无误,是死循环2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。.4000006.*
21、#*#*#$7.8528.d=1.0+kk<=n9.x>=0x<amin三、编程题(第145页)源程序:main()inti=1,sum=i;while(i<101)sum+=i=-i-2;sum+=i=-i+2;printf("%dn",sum);执行结果:2. 51源程序:main()doublep=0,n=0,f;inti;for(i=1;i<=10;i+)scanf("%lf",&f);墨后06催wi安5-5P溟-wu'szd(omuEobv。)(P-)AU一doobv。)OOCH汶8*。2(+-qv
22、M")£OOCH汶仰。SO3O5史-PMPM-muraos._ocqCT56UO-PCDU6一Sun)()u一BE归驰w.寸NSWloCD9孚捋wic(-u-qcAMdsHxob汶5=d汶-MUEGr。奇叫-PM-msosh5PCDU6一Sun)()u一BE归驰w.s安u+crud-uw汶fMm-mue(Tr+u(Ds_(Dir+doA)M一ng槃(1) 009略原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e=1+1+1/2!+1/3!+1/n!+源程序:main()(doublee=1,f=1;intn;for(n=1;n<=20;n+)(f/=n;e
23、+=f;printf("e=%.14lfn",e);执行结果:(2) e=2.71828182845905源程序:main()(doublee=1,f=1;intn;for(n=1;f>1e-4;n+)(f/=n;e+=f;printf("e=%.4fn",e);执行结果:5. e=2.7183源程序:main()(unsignedlonga=0,b=1,c=0;inti,d;scanf("%d”,&d);for(i=1;i<=(d+2)/3;i+)printf("%10ld%10ld%10ld”,a,b,(a+=
24、b+c,b+=c+a,c+=a+b);本题还可以用递归算法(效率很低),源程序如下:unsignedlongfun(inti)returni<=3?i:fun(i-1)+fun(i-2)+fun(i-3);main()inti,d;scanf("%d”,&d);for(i=1;i<=d;i+)printf("%10ld",fun(i);执行结果:6. 1523611203768125230423778143126324841源程序:main()inti;for(i=1010;i<=9876;i+=2)if(i/100%11&&am
25、p;i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf("%d",i);执行结果:7. 10241026102810321034103698749876源程序:main()(inti,j,k;printf("applewatermelonpearn");for(i=1;i<=100;i+)for(j=1;j<=10;j+)if(k=100-i-j)*2=400-i*4-j*40)p
26、rintf("%4d%7d%9dn",i,j,k);执行结果:8. applewatermelonpear559024472433546223681118源程序:#include"stdio.h"#defineN4/*N为阶数,可以改为其他正整数*/main()(intm=N*2,i,j;for(i=1;i<m;printf("n"),i+)for(j=1;j<m;putchar(N-abs(i-N)<=abs(j+-N)?'':'*');如果把N值改为5,则执行结果如下:*作者:宁西
27、贯通2006-5-723:41回复此发言8说明注意:上面最后一题的输出结果应该是由星号组成的一个菱形,9第7章数组一、单项选择题(第192页)1-4.BBCC5-8.AABA二、填空题(第194页)1.12481632641282561. 512aage+i=18;i<26breaki=8ai>bji<3j<5bj=aj0bj<ajk6.ak+=aj三、编程题(第196页)源程序:main()(inta44,i,j,s=0;for(i=0;i<4;i+)for(j=0;j<4;j+)scanf("%d",&aij);for(
28、i=0;i<4;i+)for(j=0;j<4;j+)if(i=j|i+j=3)s+=aij;printf("%dn",s);/*注:5x貌阵不能照此计算!*/执行结果:2. 234567891011121314151668源程序:main()(inti,a36;a0=2;for(i=1;i<=29;i+)ai=ai-1+2;for(;i<=35;i+)ai=a(i-30)*5+2;for(i=0;i<=35;i+)printf("%dt",ai);执行结果:3. 4681012141618202224262830323436
29、38404244464850525456586061626364656源程序:#include"stdlib.h"#include"time.h"main()inta30,i,m=0;randomize();for(i=0;i<=29;i+)ai=rand();if(m<ai)m=ai;printf("%dt”,ai);for(i=0;i<=29;i+)if(ai=m)ai=-1;printf("nn");for(i=0;i<=29;i+)if(ai)printf("%dt”,ai);pri
30、ntf("n");执行结果:4. 206792937718589903427083495934385241322782334432499293052234059271303121612583318552297714283485122038699211394208872738162931834716414102102067929377185899034270834959343852413227823344293052234059271303121612583318552297714283485122038699211394208872738162931834716414102
31、10源程序:main()(inti,n=0,b16;scanf("%d",&i);for(;i;i>>=1)bn+=i&1;for(;n;)printf("%d",b-n);执行结果:987610011010010100本题也可以不用数组。源程序如下:5. #include"stdio.h"main()(inti,n;scanf("%d",&i);for(n=16;n;n-)(asmROLi,1putchar(i&1|48);/*ROL是循环左移的汇编指令*/源程序:#i
32、nclude"stdlib.h"#include"time.h"#defineM5#defineN6main()intaMN,i,j,tM;randomize();/*生成M行N列随机数*/for(i=0;i<M;printf("n"),ti+=0)for(j=0;j<N;j+)printf("%4d”,aij=random(50);/*找出每行的最小数,tM是第M行的最小数所在的列数*/for(i=0;i<M;i+)for(j=0;j<N;j+)if(aiti>aij)ti=j;/*比较每个最
33、小数在其所在的列上是否也是最小*/for(j=0;j<M;j+)for(i=0;i<M;i+)if(i=j)continue;if(ajtj>aitj)(tj=-1;break;printf("n");/*输出在行和列上均为最小的数*/for(i=0;i<M;i+)if(ti!=-1)printf("a%d,%d=%dn”,i,ti,aiti);执行结果:6. 1319132001204161635305378231563624291811528214634a0,4=0a1,2=6a3,5=1a4,0=1源程序:#include"
34、stdlib.h"#include"time.h"#defineM5#defineN7main()(intaMN,i,j,t=0;randomize();for(i=0;i<M;i+)(aiN-1=0;for(j=0;j<N-1;j+)(printf("%4d",aij=random(91)+10);aiN-1+=aij;printf("%4dn",aiN-1);for(i=1;i<M;i+)if(aiN-1>atN-1)t=i;if(t)for(j=0;j<N;j+)(i=a0j;a0j=at
35、j;atj=i;printf("n");for(i=0;i<M;printf("n"),i+)10第7章数组for(j=0;j<N;j+)printf("%4d",aij);执行结果:7. 891732953520288394822277322231518739718446378849497772726405695056893746347849497772726405394822277322231518739718446378891732953520288695056893746347源程序:#include"s
36、tdlib.h”#include"time.h"#defineM5#defineN6main()(intaMN,i,j;structdata(intvalue,x,y;max,min;max.value=0;min.value=100;randomize();for(i=0;i<M;printf("n"),i+)for(j=0;j<N;j+)(printf("%4d",aij=random(100)+1);if(max.value<aij)(max.value=aij;max.x=i;max.y=j;if(min.v
37、alue>aij)(min.value=aij;min.x=i;min.y=j;printf("n");i=a0N-1;a0N-1=max.value;amax.xmax.y=i;i=aM-10;aM-10=min.value;amin.xmin.y=i;for(i=0;i<M;printf("n"),i+)for(j=0;j<N;j+)printf("%4d",aij);执行结果:9. 51537465304030265066127471654587619577444927148735760327367515374
38、65309230265073612747165458761957744440714865760327367源程序:main()(chars255;inti,j,b=1;printf("Inputastring:");scanf("%s",s);i=strlen(s);for(j=1;j<=i/2;j+)b=b&&(sj-1=si-j);printf(b?"Yesn":"Non");执行结果:10. Inputastring:levelYes源程序:main()(chars255,t,max=0
39、,min=0,l,i;printf("Inputastring(length>4):");gets(s);l=strlen(s);for(i=0;i<l;i+)(if(smax<si)max=i;if(smin>si)min=i;t=s1;s1=smax;smax=t;if(min=1)min=max;t=sl-2;sl-2=smin;smin=t;printf("%sn",s);执行结果:11. Inputastring(length>4):C+BuilderCu+Beild+r源程序:main()(charm1310=(
40、"*”,"January”,"February”,"March”,"April","May","June","July","August","September","October","November","December"inti,j,k,a,s,n;printf("Pleaseinputaninteger(100.999):");scanf("
41、;%d”,&n);printf("%d:%d+%d+%d=%d,%d%13=%d,%sn",n,i,j,k,s,s,a,ma=(s=(i=n/100)+(j=n/10%10)+(k=n%10)%13);执行结果:Pleaseinputaninteger(100.999):539539:5+3+9=17,17%13=4,April11第8章函数1. 一、单项选择题(第241页)1-5.BCCAA6-10.CCDDD11-15.ACACB二、填空题(第243页)看不出原题的意图。因为要计算1n的累加和,n应是一个A1的正整数。可是题目中却出现了n=0的情况。除非另加规定
42、当n=0时1n的累加和为0,或者把原题中的计算式改为计算0n的累加和。据此猜测,原题应填为:return(0)return(n+sum(n-1)根据题意,如下程序较为合理:intsum(intn)if(n<=0)return(-1);/*-1是出错标志*/elseif(n=1)return(1);2. elsereturn(n+sum(n-1);return(1)return(n*facto(n-1)三、编程题(第244页)源程序:main()(inti,a,b,c;for(i=100;i<999;i+)if(a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货物交易免责协议书范本
- 贷款订单转让协议书模板
- 2025年大学化学试题理解与运用试题及答案
- 《Part I》获奖教案下载七年级上册初中英语北师大版
- 玻璃钢航空警示球不同颜色的含义是什么
- 2025年理疗师考试试题及答案
- 26届化学初赛试题及答案
- 商业房意向协议合同协议
- 怀孕上班安全协议书模板
- 商业经营服务合同协议
- 锂电池起火应急演练
- 2022年四川省阿坝州中考数学试卷
- 分布式光伏经济评价规范
- 2024年江苏交通控股有限公司招聘笔试参考题库附带答案详解
- 银行理财双录培训课件
- 乾坤未定吾皆黑马+高考冲刺百日誓师主题班会
- 2025年4月自考00160审计学押题及答案解析
- 如何通过饮食调理改善肠道功能
- 了解高中生心理健康问题的常见表现和解决方法
- 住培临床技能教学教案
- 公路养护安全作业规程-隧道养护作业控制区布置
评论
0/150
提交评论