谭浩强《C程序设计课后答案》.docx

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

谭浩强《C程序设计课后答案》.docx

《谭浩强《C程序设计课后答案》.docx》由会员分享,可在线阅读,更多相关《谭浩强《C程序设计课后答案》.docx(64页珍藏版)》请在冰点文库上搜索。

谭浩强《C程序设计课后答案》.docx

谭浩强《C程序设计课后答案》

二级C语言课本课后习题参考答案

第一章程序设计基本概念

**************************************************

(1)exe

(2)C,obj,exe

(3)顺序,选择,循环

***************EndofChapter1*******************

第二章C程序设计的初步知识

**************************************************

一、选择题

(1)B

(2)D(3)B(4)A(5)C

(6)A(7)B(8)B(9)A(10)C

(11)B(12)B(13)A

二、填空题

(14)11,12

(15)4.2,4.2

(16){,}说明,执行

(17)关键字,用户标识符

(18)int,float,double

(19)floata1=1,a2=1;

(20)存储单元

(21)3.5

(22)a*b/ca/c*ba*(b/c)

(23)10赋给变量s

(24)位,0或1

(25)8,255,11111111,0,00000000

(26)32767,-32768,1000000000000000

(27)十,八,十六

三、上机改错题

——————————————————————————————————————

(28)请指出以下C程序的错误所在

#includestdio.h;

main();/*mainfunction*/

floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/

r=5.0;

s=3.14159*r*r;

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

※正确应为:

#include或#include"stdio.h"

main()/*mainfunction*/

{

floatr,s;/*risradius,sisareaofcircular*/

r=5.0;

s=3.14159*r*r;

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

}

——————————————————————————————————————

(29)请指出以下C程序的错误所在

#includestdio.h

main/*mainfunction*/

{

floata,b,c,v;/*a,b,caresides,visvolumeofcube*/

a=2.0;b=3.0;c=4.0

v=a*b*c;

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

}

※正确应为:

#include"stdio.h"

main()/*mainfunction*/

{

floata,b,c,v;/*a,b,caresides,visvolumeofcube*/

a=2.0;b=3.0;c=4.0;

v=a*b*c;

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

}

***************EndofChapter2*******************

第三章顺序结构

**************************************************

一、选择题

(1)C

(2)C(3)D(4)C(5)D

(6)B(7)C(8)D(9)A(10)B

(11)C(12)D(13)D(14)A(15)C

(16)C(17)C(18)均不对,应为scanf(“%6f”,&c)(18)C(20)B

二、填空题

(21)①-200,2500②i=-200,j=2500③i=-200,j=2500

(22)12,0,0

(23)语句块,{;}

(24);

(25)100<空格>25.81<空格>1.89234/*可用一个或几个空格作为输入时的间隔符*/

10025.811.89234/*Tab(制表符)也可以作为输入时的间隔符*/

10025.811.89234/*CR(回车符)也可以作为输入时的间隔符*/

(26)x=127,x=ццц127,x=ццц177,x=цццц7f,x=ццц127。

(27)x=127,x=127ццц,x=177ццц,x=7fцццц,x=127ццц。

(28)a=513.789215,a=цц513.79,a=цц513.78921500,a=цц513.78921500

三、上机改错题

——————————————————————————————————————

3.30编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。

※程序如下※

main()

{

inthour,minute;

hour=560/60;

minute=560%60;

printf("hour=%d,minute=%d",hour,minute);

}

——————————————————————————————————————

3.31编写程序,输入两个整数:

1500和350,求出它们的商数和余数并进行输出。

※程序如下※

#include

main()

{

intnum1,num2,i,j;/*定义变量i-商,j-余数*/

printf("inputnum1andnum2:

\n");

scanf("%d%d",&num1,&num2);

i=num1/num2;

j=num1%num2;

printf("商=%d\n余数=%d",i,j);

}

——————————————————————————————————————

3.32编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。

※程序如下※

main()

{

doublea,b,c,average=0;

printf("inputa,b,c(double):

\n");

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

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

average=average*10;

average=average+0.5;

average=(int)average;

average=average/10;

printf("average=%lf",average);

}

——————————————————————————————————————

3.33编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。

※程序如下※

main()

{

inta,b,c,t=0;

printf("inputabc:

\n");

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

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

printf("a=%db=%dc=%d",a,b,c);

}

***************EndofChapter3*******************

第四章选择结构

**************************************************

一、选择题

(1)A

(2)A(3)A(4)D(5)C

(6)A(7)B(8)均错(9)D(10)A

二、填空题

(11)非零,零

(12)<或<=、>或>=、==、!

=

(13)逻辑非、逻辑与、逻辑或

(14)!

、<或<=、>或>=、==、!

=、&&、||

(15)!

(16)a==b||a4或x>4||x<-4

(17)1

(18)x>0?

0:

1,1

(19)a=3,b=2,c=2

(20)*#

三、编程题

——————————————————————————————————————

4.21当a>0时,请将以下语句改写成switch语句。

if(a<30)m=1;

elseif(a<40)m=2;

elseif(a<50)m=3;

elseif(a<60)m=4;

elsem=5;

※程序如下※

main()

{

inta;

printf("Entera:

\n");

scanf("%d",&a);

switch(a/10)

{

case0:

case1:

case2:

printf("m=1");break;

case3:

printf("m=2");break;

case4:

printf("m=3");break;

case5:

printf("m=4");break;

default:

printf("m=5");

}

}

——————————————————————————————————————

4.22编写程序,输入一位学生的生日(年:

y0、月:

m0、日:

d0);并输入当前的日期(年:

y1、月:

m1、日:

d1);输出该生的实足年龄。

※程序如下※

main()

{

inty0,y1,m0,m1,d0,d1,age=0;

printf("YourBirthday(yyyy-mm-dd):

\n");

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

printf("CurrentDate(yyyy-mm-dd):

\n");

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

if(d1>m1)age=y1-y0;

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

}

——————————————————————————————————————

4.23编写程序,输入一个整数,打印出它是奇数还是偶数。

※程序如下※

main()

{

inti;

printf("inputainteger:

\n");

scanf("%d",&i);

if(i%2==0)/*条件判断*/

printf("%disaeven",i);

else

printf("%disaodd",i);

}

——————————————————————————————————————

4.24编写程序,输入a、b、c三个数,打印出最大者。

※程序如下※

main()

{

inta,b,c,max=0;

printf("input(int)abandc:

\n");

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

max=a;

if(maxBRmax="b;">if(maxBRmax="c;">printf("max=%d",max);

}

——————————————————————————————————————

4.25有一函数:

编写一程序,要求输入x的值,输出y的值。

分别

(1)不嵌套的if语句

(2)嵌套的if语句

(3)if_else语句(4)switch语句

※程序如下※

源程序一:

(1)不嵌套的if语句

main()

{

floatx;

printf("inputx:

\n");

scanf("%f",&x);

if(x>-5&&x<0)

printf("y=%f",x);

if(x==0)

printf("y=%f",x-1);

if(x>0&&x<10)

printf("y=%f",x+1);

if(x<=-5||x>=10)

printf("inputerror");

}

源程序二:

(2)嵌套的if语句

main()

{

floatx;

printf("inputx:

\n");

scanf("%f",&x);

if(x>-5&&x<10)

{

if(x==0)printf("y=%f",x-1);

if(x<0)printf("y=%f",x);

if(x>0)printf("y=%f",x+1);

}

if(x<=-5||x>=10)

printf("inputerror");

}

源程序三:

(3)if_else语句

main()

{

floatx;

printf("inputx:

\n");

scanf("%f",&x);

if(x>-5&&x<10)

if(x<0)

printf("y=%f",x-1);

elseif(x==0)

printf("y=%f",x);

else

printf("y=%f",x+1);

else

printf("inputerror");

}

源程序四:

(4)switch语句

main()

{

intflag;

floatx;

printf("Enterx:

\n");

scanf("%f",&x);

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

if(x==0)flag=0;

if(x>0&&x<10)flag=1;

switch(flag)

{

case-1:

printf("y=%f",x);break;

case0:

printf("y=%f",x-1);break;

case1:

printf("y=%f",x+1);break;

}

}

***************EndofChapter4*******************

第五章循环结构

**************************************************

一、选择题

(1)D

(2)C(3)B(4)C(5)C

(6)B(7)D(8)A(9)D(10)D

二、填空题

(11)5,4,6

(12)有错

(13)-1

(14)11

(15)d=1.0,k++,k<=n

(16)x>=0,x

三、编程题

——————————————————————————————————————

5.17编写程序,求1-3+5-7+...-99+101的值。

※程序如下※

main()

{

inti,sum=0,s=1;

for(i=1;i<=101;i+=2)

{

sum=sum+i*s;

s=-s;/*控制符号交替变换*/

}

printf("sum=%d",sum);

}

——————————————————————————————————————

5.18编写程序,求e的值,e=1+1/1!

+1/2!

+1/3!

+1/4!

+...+1/n!

(1)用for循环,计算前50项

(2)用while循环,要求直至最后一项的值小于1e-4。

※程序如下※

源程序一:

(1)用for循环实现

main()

{

inti,n;

doublesum=1,t=1;

printf("inputn:

\n");

scanf("%d",&n);

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

{

t=t*i;/*实现阶乘*/

sum=sum+1/t;

}

printf("e=%lf",sum);

}

源程序二:

(2)用while循环实现

#include

main()

{

inti;

doubelsum=1,t=1;

while(fabs(1.0/t)>1e-4)/*fabs求浮点型数据的绝对值*/

{

t=t*i;

sum=sum+1/t;

i++;

}

printf("e=%lf",sum);

}

——————————————————————————————————————

5.19编写程序,输出从公元1000年至2000年所有闰年的年号每输出3个年号换一行。

判断公元年是否闰年的条件是:

(1)公元年数如能被4整除,而不能被100整除,则是闰年。

(2)公元年数能被400整除也是闰年。

※程序如下※

main()

{

inti,j=0;

for(i=1000;i<=2000;i++)

{

if((i%4==0)&&(i%100!

=0)||(i%400==0))/*判断是否是闰年的条件*/

{

printf("&d",i);

j++;

if(j%3==0)/*控制换行*/

printf("\n");

}

}

}

——————————————————————————————————————

5.20编写程序,打印以下图形:

*

***

*****

*******

*****

***

*

※程序如下※

#include

main()

{

inti,j;

for(i=1;i<=7;i++)/*控制行数*/

{

for(j=1;j<=7;j++)/*控制星数*/

{

if((j<=fabs(4-i))||(j>7-fabs(4-i)))

printf("");

else

printf("*")

}

printf("\n");

}

}

***************EndofChapter5*******************

第六章字符型数据

**************************************************

一、选择题

(1)B

(2)D(3)A(4)A(5)B

(6)D(7)D(8)B(9)A(10)A

(11)B(c)

二、填空题

(12)-1

(13)1

(14)ctype.h

(15)0

(16)10A20B30C40D

(17)7.29101.298↙AB↙(7.29↙101.298↙AB↙)

(18)A7.29B101.298↙

(19)AЦЦЦ↙BЦЦЦ↙C↙

三、编程题

——————————————————————————————————————

6.21请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三队.

※程序如下※

#include

main()

{

inti=0;

charch;

while((ch=getchar())!

='\n')

{

printf("%4c%4d",ch,ch);

i++;

if(i%3==0)

printf("\n");

}

}

——————————————————————————————————————

6.21请编写程序,输入一行数字字符(用EOF结束),每个数字字符的前后都有空格。

请编程,把这一行中的数字转换成一个整数。

例如,若输入:

2483(代表Enter键)

则输出整数:

2483

※程序如下※

#include

main()

{

charch;

while((ch=getchar())!

=EOF)

{

if(ch=='')

continue;

else

printf("%c",ch);

}

}

——————————————————————————————————————

6.22请编写程序统计输入的行数,输入用EOF结束输入。

※程序如下※

#include

main()

{

charch;

inti=0;

while((ch=getchar())!

=EOF)

{

if(ch=='\n')i++;

}

printf("%d",i);

}

——————————————————————————————————————

6.23请编写程序统计输入的一行中小写字母的个数。

※程序如下※

#include

main()

{

inti=0;

charch;

while((ch=getchar())!

='\n')

{

if((ch>='a')&&(ch<='z'))

i++;

}

printf("%d",i);

}

——————————————————————————————————————

6.24请编写输出以下图案的程序,图案的行数由输入的值确定。

A

BBB

CCCCC

DDDDDDD

EEEEEEEEEEE

※程序如下※

#include

main()

{

inti,j,k,n;

printf("Entern(integer):

\n");

scanf("%d",&n);

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

{

for(j=n;j>i;j--)

printf("");

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

printf("%c",64+i);

printf("\n");

}

}

***************EndofChapter6*******************

第七章函数

**************************************************

一、选择题

(1)C

(2)C(3)B(4)C(5)A

(6)D(7)A

二、填空题

(8)12

(9)9.000000

(10)4

(11)n=1,s

(12)z=1;i<=y,z=z*x

(13)1,s*i,0,f(k)

三、程序设计和编程题

——————————————————————————————————————

7.14以下fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正。

fun(intn)

{

intk,yes;

for(k=2;k<=n/2;k++)

if(n%k==0)returnyes=0;

returnyes=1;

}

※正确答案是:

fun(intn)

{

intk,yes=1;

for(k=2;k<=n/2;k++)

if(n%k==0)returnyes=0;

returnyes;

}

main()

{

intn,yes;

printf("Entern(int):

\n");

scanf("%d",&n);

yes=fun(n);

if(yes==1)printf("%

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

当前位置:首页 > 医药卫生 > 基础医学

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

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