c语言程序设计教程李凤霞第三版课后答案.docx
- 文档编号:27283504
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:33
- 大小:24.07KB
c语言程序设计教程李凤霞第三版课后答案.docx
《c语言程序设计教程李凤霞第三版课后答案.docx》由会员分享,可在线阅读,更多相关《c语言程序设计教程李凤霞第三版课后答案.docx(33页珍藏版)》请在冰豆网上搜索。
c语言程序设计教程李凤霞第三版课后答案
1【C语言】《C语言程序设计教程(第二版)》习题答案
说 明
1.本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理工大学出版社出版的,绿皮。
2第1章程序设计基础知识
一、单项选择题(第23页)
1-4.CBBC5-8.DACA
二、填空题(第24页)
1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分
三、应用题(第24页)
2.源程序:
main()
{inti,j,k;/*i:
公鸡数,j:
母鸡数,k:
小鸡数的1/3*/
printf("cockhenchick\n");
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%d\n",i,j,k*3);}
执行结果:
cockhenchick
41878
81181
12484
3.现计算斐波那契数列的前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()
{inti;
for(i=0;i<=19;i++)
printf("%8d",fib(i));}
fib(inti)
{return(i<=1?
1:
fib(i-1)+fib(i-2));}
执行结果:
11235813213455
891442333776109871597258441816765
4.源程序:
#include"math.h";
main()
{doublex,x0,deltax;
x=1.5;
do{x0=pow(x+1,1./3);
deltax=fabs(x0-x);
x=x0;
}while(deltax>1e-12);
printf("%.10f\n",x);}
执行结果:
1.3247179572
5.源程序略。
(分子、分母均构成斐波那契数列)
结果是32.66026079864
6.源程序:
main()
{inta,b,c,m;
printf("Pleaseinputa,bandc:
");
scanf("%d%d%d",&a,&b,&c);
if(a
if(a if(b printf("%d%d%d\n",a,b,c);} 执行结果: Pleaseinputa,bandc: 123456789 789456123 7.源程序: main() {inta; scanf("%d",&a); printf(a%21==0? "Yes": "No");} 执行结果: 42 Yes 3第2章C语言概述 一、单项选择题(第34页) 1-4.BDCB5-8.AABC 二、填空题(第35页) 1.主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);} 执行结果: 1234 3412 4第3章数据类型与运算规则 一、单项选择题(第75页) 1-5.DBACC6-10.DBDBC11-15.ADCCC16-20.CBCCD21-25.ADDBC26-27.AB 二、填空题(第77页) 1.补码2.±(10^-308~10^308)3.int(整数)4.单目自右相左5.函数调用6.a或b7.18.65,89 三、应用题(第78页) 1.109 2.执行结果: 11 0 0 12 1 5第4章顺序结构程序设计 一、单项选择题(第90页) 1-5.DCDAD6-10.BACBB 二、填空题(第91页) 1.一;2.5.1690003. (1)-2002500 (2)I=-200,j=2500(3)i=-200 j=25004.a=98,b=765.000000,c=4321.0000005.略6.0,0,37.38.scanf("%lf%lf%lf",&a,&b,&c);9.1313.000000,13.00000010.a=a^c;c=c^a;a=a^c;(这种算法不破坏b的值,也不用定义中间变量。 ) 三、编程题(第92页) 1.仿照教材第27页例2-1。 2.源程序: main() {inth,m; scanf("%d: %d",&h,&m); printf("%d\n",h*60+m);} 执行结果: 9: 23 563 3.源程序: main() {inta[]={-10,0,15,34},i; for(i=0;i<=3;i++) printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);} 执行结果: -10℃=14°F0℃=32°F15℃=59°F34℃=93.2°F 4.源程序: main() {doublepi=3.14159265358979,r=5; printf("r=%lgA=%.10lfS=%.10lf\n",r,2*pi*r,pi*pi*r);} 执行结果: r=5A=31.4159265359S=49.3480220054 5.源程序: #include"math.h"; main() {doublea,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=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));} elseprintf("Dataerror! ");} 执行结果: 456 SS=9.9215674165 6.源程序: main() {inta=3,b=4,c=5;floatd=1.2,e=2.23,f=-43.56; printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);} 7.源程序: main() {inta,b,c,m; scanf("%d%d%d",&a,&b,&c); m=a;a=b;b=c;c=m; printf("%d%d%d\n",a,b,c);} 执行结果: 567 675 8.源程序: main() {inta,b,c; scanf("%d%d%d",&a,&b,&c); printf("averageof%d,%dand%dis%.2f\n",a,b,c,(a+b+c)/3.); 执行结果: 679 averageof6,7and9is7.33 9.不能。 修改后的源程序如下: 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=%d\n",a,b,c); printf("x=%d,y=%d\n",x,y);} 6第5章选择结构程序设计 一、单项选择题(第113页) 1-4.DCBB5-8.DABD 二、填空题(第115页) 1.非002.k==0 3.if(abs(x)>4)printf("%d",x);elseprintf("error! "); 4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x); 5.k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。 ) 6.8! Right! 117.$$$a=08.a=2,b=1 三、编程题(第116页) 1.有错。 正确的程序如下: main() {inta,b,c; scanf("%d,%d,%d",&a,&b,&c); printf("min=%d\n",a>b? b>c? c: b: a>c? c: a);} 2.源程序: main() {unsignedlonga; scanf("%ld",&a); for(;a;printf("%d",a%10),a/=10);} 执行结果: 12345 54321 3. (1)源程序: main() {intx,y; scanf("%d",&x); if(x>-5&&x<0)y=x; if(x>=0&&x<5)y=x-1; if(x>=5&&x<10)y=x+1; printf("%d\n",y);} (2)源程序: main() {intx,y; scanf("%d",&x); if(x<10)if(x>-5)if(x>=0)if(x>=5)y=x+1; elsey=x-1;elsey=x; printf("%d\n",y);} (3)源程序: 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("%d\n",y);} (4)源程序: 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("%d\n",y);} 4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。 现给出Delphi源程序和C++Builder源程序。 Delphi源程序: procedureTForm1.Button1Click(Sender: TObject); begin edit3.Text: =format('%.0f天',[strtodate(edit2.text)-strtodate(edit1.text)]); end; procedureTForm1.FormCreate(Sender: TObject); begin Edit2.Text: =datetostr(now); button1click(form1) end; C++Builder源程序: void__fastcallTForm1: : Button1Click(TObject*Sender) { Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天"; } void__fastcallTForm1: : FormCreate(TObject*Sender) { Edit2->Text=DateToStr(Now()); Button1Click(Form1); } 执行结果: (运行于Windows下) 5.源程序: main() {unsigneda,b,c; printf("请输入三个整数: "); 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");} 执行结果: 请输入三个整数: 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=%d\n",x,y);} 7.源程序: 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%.2f\n",m,m*(1-n),m*n);} 执行结果: 450 450429.7520.25 8.2171天(起始日期和终止日期均算在内) 本题可利用第4小题编好的程序进行计算。 把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。 9.源程序: #include"math.h"; main() {unsignedlongi; scanf("%ld",&i); printf("%ld%d\n",i%10,(int)log10(i)+1);} 执行结果: 99887 75 10.源程序: main() {unsignedlongi;unsignedj[10],m=0; scanf("%ld",&i); for(;i;){j[m++]=(i+2)%10;i/=10;} for(;m;m--)i=i*10+j[m-1]; printf("%ld\n",i);} 执行结果: 6987 8109 (注: 要加密的数值不能是0或以0开头。 如果要以0开头需用字符串而不能是整数。 ) 7第6章循环结构程序设计 一、单项选择题(第142页) 1-4.BCCB5-8.CBCA 二、填空题(第143页) 1.原题可能有误。 如无误,是死循环2.原题有误。 如果把b=1后面的逗号改为分号,则结果是8。 3.204.115.2.4000006.*#*#*#$7.8528.①d=1.0②++k③k<=n9.①x>=0②x 三、编程题(第145页) 1.源程序: main() {inti=1,sum=i; while(i<101){sum+=i=-i-2;sum+=i=-i+2;} printf("%d\n",sum);} 执行结果: 51 2.源程序: main() {doublep=0,n=0,f;inti; for(i=1;i<=10;i++) {scanf("%lf",&f); if(f>0)p+=f;elsen+=f;} printf("%lf%lf%lf\n",p,n,p+n);} 3.源程序: main() {unsigneda; scanf("%ld",&a); for(;a;printf("%d,",a%10),a/=10); printf("\b\n");} 执行结果: 23456 6,5,4,3,2 4.源程序: main() {unsignedlonga,b,c,i; scanf("%ld%ld",&a,&b); c=a%1000; for(i=1;i if(c<100)printf("0"); if(c<10)printf("0"); printf("%ld\n",c);} 执行结果: 12957 009 5.略 6.原题提供的计算e的公式有误(前面漏了一项1)。 正确的公式是e=1+1+1/2! +1/3! +…+1/n! +… (1)源程序: main() {doublee=1,f=1;intn; for(n=1;n<=20;n++){f/=n;e+=f;} printf("e=%.14lf\n",e);} 执行结果: e=2.71828182845905 (2)源程序: main() {doublee=1,f=1;intn; for(n=1;f>1e-4;n++){f/=n;e+=f;} printf("e=%.4f\n",e);} 执行结果: e=2.7183 7.源程序: 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+=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));} 执行结果: 15 123611203768 125230423778143126324841 8.源程序: main() {inti; for(i=1010;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);} 执行结果: 102410261028103210341036…………98749876 9.源程序: main() {inti,j,k; printf("applewatermelonpear\n"); 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%9d\n",i,j,k);} 执行结果: applewatermelonpear 5590 24472 43354 62236 81118 10.源程序: #include"stdio.h"; #defineN4/*N为阶数,可以改为其他正整数*/ main() {intm=N*2,i,j; for(i=1;i for(j=1;j putchar(N-abs(i-N)<=abs(j++-N)? '': '*'));} 如果把N值改为5,则执行结果如下: * *** ***** ******* ********* ******* ***** *** * 作者: 宁西贯通 2006-5-723: 41 回复此发言 -------------------------------------------------------------------------------- 8说明 注意: 上面最后一题的输出结果应该是由星号组成的一个菱形, 9第7章数组 一、单项选择题(第192页) 1-4.BBCC5-8.AABA 二、填空题(第194页) 1.1 2 4 8 16 32 64 128 256 512 2.①a[age]++②i=18;i<26 3.①break②i==8 4.①a[i]>b[j]②i<3③j<5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 教程 李凤霞 第三 课后 答案