c语言第二版课后答案北理工版.docx

上传人:b****1 文档编号:10155608 上传时间:2023-05-24 格式:DOCX 页数:33 大小:26.09KB
下载 相关 举报
c语言第二版课后答案北理工版.docx_第1页
第1页 / 共33页
c语言第二版课后答案北理工版.docx_第2页
第2页 / 共33页
c语言第二版课后答案北理工版.docx_第3页
第3页 / 共33页
c语言第二版课后答案北理工版.docx_第4页
第4页 / 共33页
c语言第二版课后答案北理工版.docx_第5页
第5页 / 共33页
c语言第二版课后答案北理工版.docx_第6页
第6页 / 共33页
c语言第二版课后答案北理工版.docx_第7页
第7页 / 共33页
c语言第二版课后答案北理工版.docx_第8页
第8页 / 共33页
c语言第二版课后答案北理工版.docx_第9页
第9页 / 共33页
c语言第二版课后答案北理工版.docx_第10页
第10页 / 共33页
c语言第二版课后答案北理工版.docx_第11页
第11页 / 共33页
c语言第二版课后答案北理工版.docx_第12页
第12页 / 共33页
c语言第二版课后答案北理工版.docx_第13页
第13页 / 共33页
c语言第二版课后答案北理工版.docx_第14页
第14页 / 共33页
c语言第二版课后答案北理工版.docx_第15页
第15页 / 共33页
c语言第二版课后答案北理工版.docx_第16页
第16页 / 共33页
c语言第二版课后答案北理工版.docx_第17页
第17页 / 共33页
c语言第二版课后答案北理工版.docx_第18页
第18页 / 共33页
c语言第二版课后答案北理工版.docx_第19页
第19页 / 共33页
c语言第二版课后答案北理工版.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言第二版课后答案北理工版.docx

《c语言第二版课后答案北理工版.docx》由会员分享,可在线阅读,更多相关《c语言第二版课后答案北理工版.docx(33页珍藏版)》请在冰点文库上搜索。

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

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

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.源程序

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

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2