C语言程序设计教材答案.docx

上传人:b****2 文档编号:17963582 上传时间:2023-08-05 格式:DOCX 页数:53 大小:113.21KB
下载 相关 举报
C语言程序设计教材答案.docx_第1页
第1页 / 共53页
C语言程序设计教材答案.docx_第2页
第2页 / 共53页
C语言程序设计教材答案.docx_第3页
第3页 / 共53页
C语言程序设计教材答案.docx_第4页
第4页 / 共53页
C语言程序设计教材答案.docx_第5页
第5页 / 共53页
C语言程序设计教材答案.docx_第6页
第6页 / 共53页
C语言程序设计教材答案.docx_第7页
第7页 / 共53页
C语言程序设计教材答案.docx_第8页
第8页 / 共53页
C语言程序设计教材答案.docx_第9页
第9页 / 共53页
C语言程序设计教材答案.docx_第10页
第10页 / 共53页
C语言程序设计教材答案.docx_第11页
第11页 / 共53页
C语言程序设计教材答案.docx_第12页
第12页 / 共53页
C语言程序设计教材答案.docx_第13页
第13页 / 共53页
C语言程序设计教材答案.docx_第14页
第14页 / 共53页
C语言程序设计教材答案.docx_第15页
第15页 / 共53页
C语言程序设计教材答案.docx_第16页
第16页 / 共53页
C语言程序设计教材答案.docx_第17页
第17页 / 共53页
C语言程序设计教材答案.docx_第18页
第18页 / 共53页
C语言程序设计教材答案.docx_第19页
第19页 / 共53页
C语言程序设计教材答案.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计教材答案.docx

《C语言程序设计教材答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教材答案.docx(53页珍藏版)》请在冰点文库上搜索。

C语言程序设计教材答案.docx

C语言程序设计教材答案

第一章:

程序设计基础知识

一、单项选择题

1.C2.B3.B4.C5.D6.A7.C8.A

二、填空题

1.判断条件

2.面向过程编程

3.结构化

4.程序

5.面向对象的程序设计语言

6.基本功能操作、控制结构

7.有穷性

8.直到型循环结构

9.算法

10.可读性

11.模块化

12.对问题的分解和模块的划分

三、应用题

1、用如何一种熟悉的方法描述求N个数中最小数的算法。

 

2、用枚举法设计例1-4中百钱买百鸡问题的算法,并用流程图表示;

 

3分别用递推和递规两种算法计算斐波那契数列:

f(n+2)=f(n+1)+f(n),f

(1)=f(0)=1

的前30项,并用流程图表示

a)递推b)递规

递推公式:

f(n)=f(n-1)+f(n-2)递规公式:

f(n)=f(n-1)+f(n-2)

f

(1)=f(0)=1

b)递推b)递规

n=30

当n>0

p=f(n)

输出p

n=n-1

/*f(n)*/

n>1

YN

r=f(n-1)+f(n-2)r=1

返回r

 

4:

一般迭代法:

迭代公式:

x1=1-x03,收敛条件:

|x0/x1|<=1e-5

 

牛顿迭代法:

f(x)=x3-x-1,f’(x)=3x2-1

迭代公式:

x1=x0-f(x0)/f’(x0)

收敛条件:

|x0/x1|<=1e-5

5:

分子a,分母b,下一项分子c,某项t=a/b,和s。

第一项:

a=2,b=1,c=a,t=a/b,s=t

第i项:

c=a+b,b=a,a=c,t=a/b,s=s+t

 

1-26:

 

6

 

78:

 

第二章:

C程序的基本结构

一、单项选择题

1.B2.D3.C4.B5.A6.A7.B8.C

二、填空题

1.主函数

2.编译系统

3.函数函数

4.输入输出

5.头文件

6..obj

7.库函数

8.文本

三、应用题

5.标识符:

au_to,_auto,file,m_i_n,hello,ABC,SIN90,x1234,until,

cos2x,s_3

关键字:

sizeof

非关键字,非标识符:

3id,-min,call..menu,n*m,x.y,1234,1234hello,s+3

第三章习题参考答案

一、单项选择题

1.D2.B3.A4.C5.C

6.D7.B8.D9.B10.C

11.A12.D13.C14.C15.C

16.B17.B18.C19.C20.D

21.A22.D23.D24.D,A25.C

26.A

二、填空题

1.补码

2.±(10-308~10308)15~16位

3.实型

4.单目从右向左

5.函数调用

6.65,89

三、应用题

1.109

2.11

0

0

12

1

3.区别是:

求负:

单目,右结合

减法:

双目,左结合

取址:

单目,右结合

按位与:

双目,左结合

第四章习题参考答案

一、单项选择题

1.D2.C3.D4.A5.D

6.B7.A8.C9.B10.B

二、       填空题

1.一条;

2.5.169000

3.

(1)-2002500

(2)i=-200,j=2500

(3)i=-200

j=2500

4.a=98,b=765.000000,c=4321.000000

5.三种可能的输入是:

(1)

(1)    100<回车>25.81<回车>1.89234<回车>

(2)

(2)    100<空格>25.81<空格>1.89234<回车>

(3)(3)    10025.811.89234<回车>

6.0,0,3

7.3

8.输入语句的格式是:

scanf("%lf%lf%lf",&a,&b,&c);

9.1313.00000013.000000

10.两种方法:

(1)增加一个临时变量t。

t=a;a=c;c=t;

(2)a=a+c;c=a-c;a=a-c;

三、编程题

1

main()

{printf("***************************\n");

printf("verygood!

\n");

printf("***************************\n");

}

2

main()

{inthour,min;

scanf("%d,%d",&hour,&min);

min=60*hour+min;

printf("%d\n",min);

}

3

main()

{floatc,f;

scanf("%f",&c);

f=32+9.0*c/5;

printf("%f\n",f);

}

按题目要求分别输入-10,0,15和34计算相应的华氏温度。

4

main()

{floatr,l,s;

scanf("%f",&r);

l=2*3.141592*r;

s=3.14159*r*r;

printf("r=%f,l=%f,s=%f\n",r,l,s);

}

5

#include

main()

{floata,b,c,s,area;

scanf("%f,%f,%f",&a,&b,&c);

if((a+b>c)||(a+c>b)||(b+c>a))/*判断两边之和大于第三边*/

{s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));/*调用开方函数,计算面积*/

printf("area=%f\n",area);

}

}

6

main()

{inta=3,b=4,c=5;

floatd=1.2,e=2.23,f=-43.56;

printf("a=%3d,b=%-4d,c=**%d\n",a,b,c);

printf("d=%3.1f\ne=%6.2f\nf=%-10.4f**",d,e,f);

}

7

main()

{inta,b,c,t;

scanf("%d,%d,%d",&a,&b,&c);

printf("a=%d,b=%d,c=%d\n",a,b,c);

t=a;

a=b;

b=c;

c=t;

printf("a=%d,b=%d,c=%d\n",a,b,c);

}

8

main()

{floata,b,c,aver;

printf(“Pleaseinputthreenumbers:

\n”);

scanf("%f,%f,%f",&a,&b,&c);

aver=(a+b+c)/3;

printf("averageof%5.2f,%5.2fand%5.2fis%5.2f",a,b,c,aver);

}

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);

}

第五章参考答案

一、单项选择题

1.B2.D3.C4.B5.B6.D7.A8.B9.D

二、填空题

1.非00

2.k==0

3.if(x>4||x<-4)printf("%d",x);elseprintf("error!

");

或:

(x>4||x<-4)?

printf("%d",x):

printf("error!

");

4.if((x%2!

=0)&&((x>=1&&x<=10)||(x>=200&&x<=210))):

printf("d%",x);

5.1

6.K=1

7.10!

Right!

11

8.$$$a=0

9.2,1

10.a>0&&a

三、编程题

1

main()

{inta,b,c;

scanf("%d,%d,%d",&a,&b,&c);

if((a>b)&&(a>c))

if(b

elseprintf("min=%d\n",c);

elseif((a

elseprintf("min=%d\n",b

b:

c);

}

2:

本程序使用goto语句,仅供参考,请勿模仿。

main()

{longa;

intk;

scanf("%ld",&a);

printf("%ld\n",a);

loop:

if(a!

=0)

{k=a%10;

printf("%d",k);

a=a/10;

gotoloop;

}

}

3

(1)用简单的if结构

main()

{intx,y;

scanf("%d",&x);

if(x<0&&x>-5)y=x;

if(x<5&&x=0)y=x-1;

if(x>=5&&x<10)y=x+1;

printf("%d,%d\n",x,y);

}

(2)用嵌套的if结构

main()

{intx,y;

printf("Pleaseinputx:

-5-----10\n");

scanf("%d",&x);

if(x<5)

if(x<0)

{if(x>-5)y=x;}

elsey=x-1;

else

if(x<10)y=x+1;

printf("%d,%d\n",x,y);

}

(3)用if-else分支结构

main()

{intx,y;

scanf("%d",&x);

if(x<0&&x>-5)y=x;

elseif(x<5&&x>=0)y=x-1;

elseif(x>=5&&x<10)y=x+1;

printf("%d,%d\n",x,y);

}

(4)        用switch()结构

main()

{intx,y,k;

printf("Pleaseinputx:

-5-----10\n");

scanf("%d",&x);

if(x<0)k=-1;

elsek=x/5;

switch(k)

{case1:

y=x+1;break;

case0:

y=x-1;break;

case-1:

y=x;break;

}

printf("%d,%d\n",x,y);

}

4

main()

{inty0,m0,d0,y1,m1,d1,age;

printf("Pleaseinputcurrentday:

\n");

scanf("%d,%d,%d",&y1,&m1,&d1);

printf("Pleaseinputbirthday:

\n");

scanf("%d,%d,%d",&y0,&m0,&d0);

age=y1-y0;

if(m1

elseif(m1==m0&&d1

printf("age=%d\n",age);

}

5

main()

{inta,b,c;

printf("Pleaseinputa,b,c:

\n");

scanf("%d,%d,%d",&a,&b,&c);/*输入三角形的三条边*/

if(a+b>c&&a+c>b&&b+c>a)/*判断两边之和大于第三边*/

if(a==b&&b==c)/*判断等边三角形*/

printf("等边三角形\n");

elseif(a==b||a==c||b==c)/*判断等腰三角形*/

printf("等腰三角形\n");

elseif(a*a+b*b=c*c||a*a+c*c=b*b||b*b+c*c=a*a)/*判断直角三角形*/

printf(“直角三角形\n”);

elseprintf("一般三角形\n");

elseprintf("不能组成三角形\n");

}

6

main()

{intx,y,k;

scanf("%d",&x);

k=x/10;

switch(k)

{case1:

y=1;break;

case2:

y=2;break;

case3:

y=3;break;

case4:

y=4;break;

case5:

y=5;break;

default:

y=6;break;

}

printf("x=%d,y=%d\n",x,y);

}

7

main()

{intm,k;

floatn;

printf("Pleaseinput购买金额m:

\n");

scanf("%d",&m);

k=m/100;

switch(k)

{case0:

n=0;break;

case1:

n=0.015;break;

case2:

n=0.025;break;

case3:

n=0.035;break;

case4:

n=0.045;break;

case5:

n=0.055;break;

default:

n=0.06;break;

}

printf("%5d,%7.2f,%7.2f",m,m-n*m,m*n);

/*输出购买金额、实际支付金额和返还金额*/

}

8:

本程序使用goto语句实现,仅供参考,请勿模仿。

main()

{intyear=1995,month,days=0;

loop:

if(year<=2000)

{

days=days+7*31+4*30+28;/*每年增加365天*/

if(year%4==0&&year%100!

=0||year%400==0)/*判断闰年*/

days++;

year++;

gotoloop;

}

days=days-21;/*仅计算到2000年12月10日*/

printf("Thetotaldaysis:

%d\n",days);

}

9:

本程序使用goto语句实现,仅供参考,请勿模仿。

main()

{longa;

intb,k=0,m;

printf("Pleaseinputa<99999:

\n");

scanf("%ld",&a);

b=a%10;

if(a/10==0)

{k=1;

printf("%ld\n",a);

}

else

{printf("%d\n",b);

m=a;

loop:

if(m!

=0)

{k++;

m=m/10;

gotoloop;

}

}

printf("%ld,%d\n",a,k);

}

 

10:

本程序使用goto语句实现,仅供参考,请勿模仿。

#include

main()

{longa,m,n=0;

inti=0,k;

scanf("%ld",&a);

m=a;

loop:

if(m!

=0)

{k=m%10;

k=k+2;

if(k>=9)

k=k%10;

m=m/10;

n=k*pow(10,i)+n;

i++;

gotoloop;

}

printf("%ld,%ld\n",a,n);

}

第六章习题参考答案

一、单选题

1.B2.C3.C4.B5.C6.B7.C8.A

二、填空题

1.无穷

2.8

3.20

4.11

5.2.400000

6.*#*#*#$

7.852

8.①floatd=1.0②k++③k<=n

9.①x>=0②x

三、编程题

1.

main()

{inti,k,s=0;

for(i=1,k=1;i<=101;i+=2,k*=-1)

s=s+i*k;

printf("%d\n",s);

}

2.

main()

{inti,k,p=0,n=0,s=0;

for(i=1;i<=10;i++)

{printf("i=%d:

",i);

scanf("%d",&k);

s+=k;

if(k>0)p+=k;

if(k<0)n+=k;

}

printf("s=%d,p=%d,n=%d\n",s,p,n);

}

3.

main()

{inti;

printf("PleaseEnterNumber:

");

scanf("%d",&i);

while(i>0)

{printf("%d,",i%10);

i/=10;

}

}

4.

(1)注释:

此题的关键是要保证乘积不超过int型允许的最大数。

由于仅要求结果的最后三位,被乘数的后三位参加运算;则将乘数后三位的每一位分别和被乘数相乘,然后部分积再相加。

main()

{inti,a,b,c1,c2,c3,y,y1,y2,y3;

printf("PleaseEntera,b:

");

scanf("%d,%d",&a,&b);

y=a;

c1=a%10;/*c1保存乘数个位上的数*/

c2=a/10%10;/*c2保存乘数十位上的数*/

c3=a/100%10;/*c3保存乘数百位上的数*/

for(i=1;i

{y%=1000;/*被乘数保留三位*/

y1=y*c1;/*被乘数和乘数个位相乘*/

y2=y*c2%100;/*被乘数和乘数十位相乘,结果保留两位*/

y3=y*c3%10;/*被乘数和乘数百位相乘,结果保留一位*/

y=y1+y2*10+y3*100;/*部分积相加*/

}

printf("%d\n",y%1000);

}

(2)解法2。

main()

{inta,b,k;

longlast;

scanf("%d%d",&a,&b);

for(last=k=1;k<=b;k++)

last=last*(a%1000)%1000;

printf("last=%ld\n",last);

}

5.

6.

(1)注释:

变量t储存阶乘,60!

已经超出单精度实型数的范围,所以t被说明为double型。

main()

{inti=1;

doublet=1;

floate=0;

do

{t=t*i++;

e=e+1./t;

}while(i<=60);

printf("%f\n",e);

}

(2)

main()

{inti=1;

doublet=1;

floate=0;

do

{e=e+1./t;

t=t*++i;

}while(1/t>=1.0e-4);

printf("%f\n",e);

}

7.

main()

{intn,x1,x2,x3,xn,i;

printf("Entern:

");

scanf("%d",&n);

if(n<=3)

xn=n;

else

{x1=1;x2=2;x3=3;

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

{xn=x1+x2+x3;

x1=x2;

x2=x3;

x3=xn;

}

}

printf("Xn=%d\n",xn);

}

8.

main()

{inti,j,k,l;

for(i=1;i<=9;i++)

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

{if(j==i)continue;

for(k=1;k<=9;k++)

{if(k==i||k==j)continue;

for(l=0;l<=9;l+=2)

{if(l==i||l==j||l==k)continue;

printf("%d\n",i*1000+j*100+k*10+l);

}

}

}

}

9.

注释:

题中水果的价格以元计价,为了避免计算中出现实数,则改为以角为计价单位。

main()

{inti,j,k;

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

for(j=0;j<=100-i;j++)

if(i*4+j*40+(100-i-j)*2==400)

printf("apple=%dwatermelon=%dpear=%d\n",i,j,100-i-j);

}

10.

main()

{inti,j,n;

printf(”\nPleaseEntern:

”);

scanf(”%d”,&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n+i-1;j++)

if(j>n-i)printf(”*”);

elseprintf(””);

printf(”\n”);

}

for(i=1;i

{for(j=1;j<=2*n-i-1;j++)

if(j>i)printf(”*”);

elseprintf(””);

printf(”\n”);

}

}

第七章习题参考答案

一、单选题

1.B2.B3.C4.C5.A6.A7.B8.A

二、填空题

1.

1

2

4

8

16

32

64

128

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

当前位置:首页 > 求职职场 > 简历

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

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