C语言程序设计教程第二版李凤霞版习题答案

上传人:痛*** 文档编号:142211360 上传时间:2022-08-24 格式:DOC 页数:41 大小:106KB
收藏 版权申诉 举报 下载
C语言程序设计教程第二版李凤霞版习题答案_第1页
第1页 / 共41页
C语言程序设计教程第二版李凤霞版习题答案_第2页
第2页 / 共41页
C语言程序设计教程第二版李凤霞版习题答案_第3页
第3页 / 共41页
资源描述:

《C语言程序设计教程第二版李凤霞版习题答案》由会员分享,可在线阅读,更多相关《C语言程序设计教程第二版李凤霞版习题答案(41页珍藏版)》请在装配图网上搜索。

1、1 【C语言】C语言程序设计教程(第二版)习题答案 说 明1. 本文所指的C语言程序设计教程(第二版)是李凤霞主编、北京理工大学出版社出版的,绿皮。 2 第1章 程序设计基础知识 一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分三、应用题(第24页) 2.源程序:main()int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf(cock hen ch

2、ickn);for(i=1;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);执行结果:cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法 源程序:main()long a,b;int i;a=b=1;for(i=1;i=10;i+) /*要计算前30项,把10改为15。*/printf(%8ld%8ld,a,b); a=a+b;b=b+a; 递归法 源程序:main()in

3、t i;for(i=0;i=19;i+)printf(%8d,fib(i);fib(int i)return(i1e-12);printf(%.10fn,x);执行结果:1.3247179572 5.源程序略。(分子、分母均构成斐波那契数列)结果是32.660260798646.源程序:main()int a,b,c,m;printf(Please input a,b and c:);scanf(%d %d %d,&a,&b,&c);if(ab)m=a;a=b;b=m;if(ac)m=a;a=c;c=m;if(bc)m=b;b=c;c=m;printf(%d %d %dn,a,b,c);执行结

4、果:Please input a,b and c:123 456 789789 456 1237.源程序:main()int a;scanf(%d,&a);printf(a%21=0?Yes:No);执行结果:42Yes 3 第2章 C语言概述 一、单项选择题(第34页)1-4.BDCB 5-8.AABC二、填空题(第35页)1.主 2.C编译系统 3.函数 函数 4.输入输出 5.头 6. .OBJ 7.库函数 8.文本三、应用题(第36页)5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符

5、。 8.源程序:main()int a,b,c;scanf(%d %d,&a,&b);c=a;a=b;b=c;printf(%d %d,a,b);执行结果:12 3434 12 4 第3章 数据类型与运算规则 一、单项选择题(第75页) 1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB二、填空题(第77页) 1.补码 2.(10-30810308) 3.int(整数) 4.单目 自右相左 5.函数调用 6.a或b 7.1 8.65,89三、应用题(第78页)1.10 92.执行结果:1100121 5 第4章 顺

6、序结构程序设计 一、单项选择题(第90页)1-5.DCDAD 6-10.BACBB二、填空题(第91页)1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf(%lf%lf%lf,&a,&b,&c); 9. 13 13.000000,13.000000 10.a=ac;c=ca;a=ac;(这种算法不破坏b的值,也不用定义中间变量。)三、编程题(第92页)1.仿照教材第27页例2-1。2.源程序:main()

7、int h,m;scanf(%d:%d,&h,&m);printf(%dn,h*60+m);执行结果:9:235633.源程序:main()int a=-10,0,15,34,i;for(i=0;ic&a+cb&b+ca) double s=(a+b+c)/2; printf(SS=%.10lfn,sqrt(s*(s-a)*(s-b)*(s-c);else printf(Data error!);执行结果:4 5 6SS=9.92156741656.源程序:main()int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;printf(a=%3d,b=%-4d

8、,c=*%dnd=%gne=%6.2fnf=%-10.4f*n,a,b,c,d,e,f);7.源程序:main()int a,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);执行结果:5 6 76 7 58.源程序:main()int a,b,c;scanf(%d %d %d,&a,&b,&c);printf(average of %d,%d and %d is %.2fn,a,b,c,(a+b+c)/3.);执行结果:6 7 9average of 6,7 and 9 is 7.339.不能。修改后

9、的源程序如下:main()int a,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.DCBB 5-8.DABD二、填空题(第115页)1.非0 0 2.k=03.if (abs(x)4) printf(%d,x);else printf(error!);4.if(x=1&x=200&xb?bc?c:b:ac?c:a);2.源程序:main()unsigned long a;sca

10、nf(%ld,&a);for(;a;printf(%d,a%10),a/=10);执行结果:12345543213.(1)源程序:main()int x,y;scanf(%d,&x);if (x-5&x=0&x=5&x10)y=x+1;printf(%dn,y);(2)源程序:main()int x,y;scanf(%d,&x);if(x-5) if(x=0) if(x=5)y=x+1; else y=x-1; else y=x;printf(%dn,y);(3)源程序:main()int x,y;scanf(%d,&x);if(x=5)y=x+1; else if(x=0)y=x-1; el

11、se if(x-5)y=x;printf(%dn,y);(4)源程序:main()int x,y;scanf(%d,&x);switch(x/5)case -1:if(x!=-5)y=x;break; case 0:y=x-1;break; case 1:y=x+1;printf(%dn,y);4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。现给出Delphi源程序和C+ Builder源程序。Delphi源程序:procedure TForm1.Button1Click(Sender: TObject);beginedit3.Text:=format(%.0f天,str

12、todate(edit2.text) -strtodate(edit1.text);end;procedure TForm1.FormCreate(Sender: TObject);beginEdit2.Text:=datetostr(now);button1click(form1)end;C+ Builder源程序:void _fastcall TForm1:Button1Click(TObject *Sender)Edit3-Text=IntToStr(StrToDate(Edit2-Text)-StrToDate(Edit1-Text)+天;void _fastcall TForm1:F

13、ormCreate(TObject *Sender)Edit2-Text=DateToStr(Now();Button1Click(Form1);执行结果:(运行于Windows下) 5.源程序:main()unsigned a,b,c;printf(请输入三个整数:);scanf(%d %d %d,&a,&b,&c);if(a&b&c&a=b&a=c)printf(构成等边三角形n); else if(a+bc&a+cb&b+ca) if(a=b|a=c|b=c)printf(构成等腰三角形n); else printf(构成一般三角形n); else printf(不能构成三角形n);执行

14、结果:请输入三个整数:5 6 5构成等腰三角形6.源程序:main()int x,y;scanf(%d,&x);if(x20)y=1;else switch(x/60)case 0:y=x/10;break; default:y=6;printf(x=%d,y=%dn,x,y);7.源程序:main()unsigned m;float n;scanf(%d,&m);if(m600)n=0.06; else n=(m/100+0.5)/100;printf(%d %.2f %.2fn,m,m*(1-n),m*n);执行结果: 450450 429.75 20.258. 2171天(起始日期和终止

15、日期均算在内) 本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。9.源程序:#include math.h;main()unsigned long i;scanf(%ld,&i);printf(%ld %dn,i%10,(int)log10(i)+1);执行结果:998877 510.源程序:main()unsigned long i;unsigned j10,m=0;scanf(%ld,&i);for(;i;)jm+=(i+2)%10;i/=10;for(;m;m-)i=i*10+jm-1;prin

16、tf(%ldn,i);执行结果: 6987 8109(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。) 7 第6章 循环结构程序设计 一、单项选择题(第142页)1-4.BCCB 5-8.CBCA二、填空题(第143页)1.原题可能有误。如无误,是死循环 2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.d=1.0 +k k=0 xamin三、编程题(第145页)1. 源程序:main()int i=1,sum=i;while(i101)sum+=i=-i-2;sum+=i

17、=-i+2;printf(%dn,sum);执行结果:512.源程序:main()double p=0,n=0,f;int i;for(i=1;i0)p+=f; else n+=f; printf(%lf %lf %lfn,p,n,p+n);3.源程序:main()unsigned a;scanf(%ld,&a);for (;a;printf(%d,a%10),a/=10);printf(b n);执行结果:234566,5,4,3,24.源程序:main()unsigned long a,b,c,i;scanf(%ld%ld,&a,&b);c=a%1000;for(i=1;ib;i+)c=c

18、*a%1000;if(c100)printf(0);if(c10)printf(0);printf(%ldn,c);执行结果:129 570095.略6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1 + 1 + 1/2! + 1/3! + + 1/n! + (1)源程序:main()double e=1,f=1;int n;for(n=1;n1e-4;n+)f/=n;e+=f;printf(e=%.4fn,e);执行结果:e=2.71837.源程序:main()unsigned long a=0,b=1,c=0;int i,d;scanf(%d,&d);for (i=1;

19、i=(d+2)/3;i+)printf(%10ld%10ld%10ld,a,b,(a+=b+c,b+=c+a,c+=a+b);本题还可以用递归算法(效率很低),源程序如下:unsigned long fun(int i)return i=3?i:fun(i-1)+fun(i-2)+fun(i-3);main()int i,d; scanf(%d,&d);for(i=1;i=d;i+)printf(%10ld,fun(i);执行结果:15 1 2 3 6 11 20 37 68 125 230 423 778 1431 2632 48418.源程序:main()int i;for(i=1010;

20、i=9876;i+=2)if(i/100%11&i%100%11&i/10%100%11&i/1000!=i%10&i/1000!=i/10%10&i/100%10!=i%10)printf( %d,i);执行结果:1024 1026 1028 1032 1034 1036 9874 98769.源程序:main()int i,j,k;printf(apple watermelon pearn);for(i=1;i=100;i+) for(j=1;j=10;j+) if(k=100-i-j)*2=400-i*4-j*40) printf(%4d%7d%9dn,i,j,k);执行结果:apple

21、 watermelon pear 5 5 90 24 4 72 43 3 54 62 2 36 81 1 1810.源程序:#include stdio.h;#define N 4 /* N为阶数,可以改为其他正整数 */main()int m=N*2,i,j;for(i=1;im;printf(n),i+) for(j=1;jm; putchar(N-abs(i-N)=abs(j+-N)? :*);如果把N值改为5,则执行结果如下: * * * * * * * * 作者:宁西贯通 2006-5-7 23:41 回复此发言 - 8 说明 注意:上面最后一题的输出结果应该是由星号组成的一个菱形,

22、 9 第7章 数 组 一、单项选择题(第192页)1-4.BBCC 5-8.AABA二、填空题(第194页)1.1 2 4 8 16 32 64 128 256 5122. aage+ i=18;ibj i3 j5 5. bj=aj0 bjajk 6.ak+=aj三、编程题(第196页)1.源程序:main()int a44,i,j,s=0;for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&aij);for(i=0;i4;i+)for(j=0;j4;j+)if(i=j|i+j=3)s+=aij;printf(%dn,s); /* 注:55矩阵不能照此计算! */执行结

23、果:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16682. 源程序:main()int i,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);执行结果:2 4 6 8 10 12 14 16 18 2022 24 26 28 30 32 34 36 38 4042 44 46 48 50 52 54 56 58 606 16 26 36 46 563. 源程序:#include stdlib.h#include time.hma

24、in()int a30,i,m=0;randomize();for(i=0;i=29;i+) ai=rand(); if(mai)m=ai; printf(%dt,ai);for(i=0;i=29;i+)if(ai=m)ai=-1;printf(n-n);for(i=0;i=1)bn+=i&1;for(;n;)printf(%d,b-n);执行结果:987610011010010100本题也可以不用数组。源程序如下:#include stdio.hmain()int i,n;scanf(%d,&i);for(n=16;n;n-) asm ROL i,1 putchar(i&1|48); /*

25、ROL是循环左移的汇编指令 */5. 源程序:#include stdlib.h#include time.h#define M 5#define N 6main()int aMN,i,j,tM;randomize();/*生成M行N列随机数*/for(i=0;iM;printf(n),ti+=0) for(j=0;jN;j+) printf(%4d,aij=random(50);/*找出每行的最小数,tM是第M行的最小数所在的列数*/for(i=0;iM;i+) for(j=0;jaij)ti=j;/*比较每个最小数在其所在的列上是否也是最小*/for(j=0;jM;j+) for(i=0;

26、iaitj) tj=-1;break; printf(-n);/*输出在行和列上均为最小的数*/for(i=0;iM;i+) if(ti!=-1) printf(a%d,%d=%dn,i,ti,aiti);执行结果: 13 19 13 20 0 1 20 41 6 16 35 30 3 5 37 8 23 15 6 36 24 29 18 1 1 5 28 21 46 34-a0,4=0a1,2=6a3,5=1a4,0=16. 源程序:#include stdlib.h#include time.h#define M 5#define N 7main()int aMN,i,j,t=0;rand

27、omize();for(i=0;iM;i+) aiN-1=0; for(j=0;jN-1;j+) printf(%4d,aij=random(91)+10); aiN-1+=aij; printf(%4dn,aiN-1);for(i=1;iatN-1)t=i;if(t)for(j=0;jN;j+) i=a0j;a0j=atj;atj=i;printf(-n);for(i=0;iM;printf(n),i+) 10 第7章 数 组 for(j=0;jN;j+) printf(%4d,aij);执行结果: 89 17 32 95 35 20 288 39 48 22 27 73 22 231 51

28、 87 39 71 84 46 378 84 94 97 77 27 26 405 69 50 56 89 37 46 347- 84 94 97 77 27 26 405 39 48 22 27 73 22 231 51 87 39 71 84 46 378 89 17 32 95 35 20 288 69 50 56 89 37 46 3477. 源程序:#include stdlib.h#include time.h#define M 5#define N 6main()int aMN,i,j;struct dataint value,x,y;max,min;max.value=0;mi

29、n.value=100;randomize();for(i=0;iM;printf(n),i+) for(j=0;jN;j+) printf(%4d,aij=random(100)+1); if(max.valueaij) 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;iM;printf(n),i+) for(j=0;jN;j+) printf(%4d,aij);执行结果: 51 53 74

30、 65 30 40 30 26 50 6 61 27 47 16 54 58 76 19 57 74 44 92 71 48 73 57 60 32 73 67- 51 53 74 65 30 92 30 26 50 73 61 27 47 16 54 58 76 19 57 74 44 40 71 48 6 57 60 32 73 679. 源程序:main()char s255;int i,j,b=1;printf(Input a string:);scanf(%s,s);i=strlen(s);for(j=1;j4):);gets(s);l=strlen(s);for(i=0;il;i+

31、)if(smaxsi)min=i;t=s1;s1=smax;smax=t;if(min=1)min=max;t=sl-2;sl-2=smin;smin=t;printf(%sn,s);执行结果:Input a string(length4):C+BuilderCu+Beild+r11. 源程序:main()char m1310=*,January,February,March,April,May,June,July,August,September,October,November,December;int i,j,k,a,s,n;printf(Please input an integer(

32、100.999):);scanf(%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);执行结果:Please input an integer(100.999):539539:5+3+9=17, 17%13=4, April 11 第8章 函 数 一、单项选择题(第241页)1-5.BCCAA 6-10.CCDDD 11-15.ACACB二、填空题(第243页)1.看不出原题的意图。因为要计算1n的累加和,n应是一个1的正整数。可是题目中却出现了n

33、=0的情况。除非另加规定当n=0时1n的累加和为0,或者把原题中的计算式改为计算0n的累加和。据此猜测,原题应填为:return(0) return(n+sum(n-1)根据题意,如下程序较为合理:int sum(int n)if(n0)return(-1); /* -1是出错标志 */ else if(n=1)return(1); else return(n+sum(n-1);2. return(1) return(n*facto(n-1)三、编程题(第244页)3.源程序:main()int i,a,b,c;for(i=100;i999;i+)if(a=i/100)*a*a+(b=i/10

34、%10)*b*b+(c=i%10)*c*c=i)printf(%dt,i);执行结果:153 370 371 4078.源程序(非递归算法):#define P 13 /* P可以改为其他正整数 */main()int aP,r,c;for(r=0;r=1;ac-+=ac-1); printf(%*d,(P-r)*3+1,a0); for(c=1;c3)printOCT(i);putchar(n&7)+48);main()unsigned long i;scanf(%ld,&i);printOCT(i);执行结果:123456789011145401322本题也可以不用递归算法,源程序请参考第

35、7章第三题4。 12 回复:【C语言】C语言程序设计教程(第二版)习题答案 但是不同时间印刷的版本课后题不太一样呢,象我们的是1999年12月第2版,2005年12月第69次印刷的。没有选择填空,应用题和楼主不知道有多少相同的,因为看不到原题。这个比较麻烦呢。 作者:210.77.204.* 2006-5-9 18:38 回复此发言 - 13 回复:【C语言】C语言程序设计教程(第二版)习题答案 你对照一下主编和出版社,看看对吗?(见说明的第一条。)我不是说叫你有问题另发帖子吗? 14 第9章 指 针 一、单项选择题(第276页)1-5.DCDAC 6-10.CCABC 11-16.AABBB

36、 16-20.DCDBD二、填空题(第278页)1.int * *z2.*p+ 3.0 + 4.q=p+1 qmax *qmin三、编程题(第280页)7.源程序:main()int i=0;char c20;doscanf(%s,&c);i+;while(strcmp(c,stop);printf(%dn,i);执行结果:This car ran form Nanyangto Luoyang without a stop109.源程序:main()char s255,c255=0;int i;gets(s);for(i=0;si;csi+);for(i=0;i255;i+)if(ci)printf(%c=%dt,i,ci);执行结果:abcedabcdcda=2 b=2 c=3 d=3 e=1

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!