C语言程序设计教程李凤霞第三版课后答案.docx

上传人:b****7 文档编号:9758749 上传时间:2023-02-06 格式:DOCX 页数:22 大小:23.04KB
下载 相关 举报
C语言程序设计教程李凤霞第三版课后答案.docx_第1页
第1页 / 共22页
C语言程序设计教程李凤霞第三版课后答案.docx_第2页
第2页 / 共22页
C语言程序设计教程李凤霞第三版课后答案.docx_第3页
第3页 / 共22页
C语言程序设计教程李凤霞第三版课后答案.docx_第4页
第4页 / 共22页
C语言程序设计教程李凤霞第三版课后答案.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C语言程序设计教程李凤霞第三版课后答案.docx

《C语言程序设计教程李凤霞第三版课后答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程李凤霞第三版课后答案.docx(22页珍藏版)》请在冰豆网上搜索。

C语言程序设计教程李凤霞第三版课后答案.docx

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

 

 

 

 

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 

5.①b[j]=a[j][0]②b[j]

三、编程题(第196页)

1.源程序:

main()

{inta[4][4],i,j,s=0;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(i==j||i+j==3)s+=a[i][j];

printf("%d\n",s);}/*注:

5×5矩阵不能照此计算!

*/

执行结果:

12345678910111213141516

68

2.源程序:

main()

{inti,a[36];

a[0]=2;

for(i=1;i<=29;i++)a[i]=a[i-1]+2;

for(;i<=35;i++)a[i]=a[(i-30)*5+2];

for(i=0;i<=35;i++)printf("%d\t",a[i]);}

执行结果:

2468101214161820

22242628303234363840

42444648505254565860

61626364656

3.源程序:

#include"stdlib.h"

#include"time.h"

main()

{inta[30],i,m=0;

randomize();

for(i=0;i<=29;i++)

 {a[i]=rand();

 if(m

 printf("%d\t",a[i]);}

for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;

printf("\n-----------------\n");

for(i=0;i<=29;i++)

 if(~a[i])printf("%d\t",a[i]);

printf("\n");}

执行结果:

2067929377185899034270834959343852413227823344

32499293052234059271303121612583318552297

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1