C语言程序设计教程第2版课后习题答案Word文件下载.docx

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

C语言程序设计教程第2版课后习题答案Word文件下载.docx

《C语言程序设计教程第2版课后习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程第2版课后习题答案Word文件下载.docx(85页珍藏版)》请在冰点文库上搜索。

C语言程序设计教程第2版课后习题答案Word文件下载.docx

说明下列TurboC方式下输入并运行下列程序,记录下运行结果。

 

①main()

{printf("

********************\n"

);

printf("

welcomeyou 

\n"

verygood 

\n);

}

②main()

inta,b,c,t;

pleaseinputthreenumbers;

"

scanf("

%d,%d,%d"

&

a,&

b,&

c);

/*教材S是错误的*/

t=max(max(a,b),c);

maxnumberis:

%d\n"

t);

intmax(intx,inty)

{intz;

if(x>

y)z=x;

elsez=y;

return(z);

运行结果:

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

welcomeyou

verygood

3,1,4/*左侧下划线内容为键盘输入*/

7

一个C程序是由若干个函数构成的,其中有且只能有一个___函数。

main()

8

在TurboC环境下进行程序调试时,可以使用Run下拉菜单的___命令或按___键转到用户屏幕查看程序运行结果。

1、Userscreen

2、Alt+F5

9

★C语言对标识符与关键字有些什么规定?

1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。

2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。

10

C源程序输入后是如何进行保存的?

是以C为扩展名保存的纯文本文件。

第二章 C语言程序的基本数据类型与表达式

-习题答案

1

★指出下列常数中哪些是符合C语法规定的。

'

\'

--×

'

101'

"

\"

e3--×

019--√ 

0x1e--√ 

ab\n"

--√ 

1.e5--×

(2+3)e(4-2)--×

5.2e2.5--×

2

请找出下列程序中的错误,改正后写出程序运行结果。

①voidmain()

{intx,y=z=5,aver;

x=7

AVER=(x+y+z)/3

AVER=%d\n"

aver);

②voidmain()

charc1='

a'

;

c2='

b'

c3='

c'

inta=3.5,b='

A'

a=%db=\'

end\n"

a,b);

a%cb%c\bc%c\tabc\n"

c1,c2,c3);

main()

{intx,y=5,z=5,aver;

x=7;

aver=(x+y+z)/3;

AVER=5

c2='

c3='

inta=3,b='

a=%d,b=\'

%c\'

end\"

\n"

a=3,b='

end"

     aabcc 

abc

3

写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。

int

99

-1

char

h'

unsignedint

66

float

55.78

longint

68

104

55

B'

7'

D'

65535

99.00

104.00

66.00

68.00

-1.00

★写出程序运行结果。

{inti,j;

i=8,j=10;

%d,%d,%d,%d\n"

i,j,++i,j++);

inta=1,b=2,c=30;

a=b=c,a=b==c,a==(b=c),a==(b==c));

注意:

a=b=c,a=b==c之间应为逗号,教材有误

9,11,9,10

30,1,0,0

③voidmain()

{inta=10,b=20,c=30,d;

d=++a<

=10||b-->

=20||c++;

a,b,c,d);

11,19,30,1

★写出下面表达式的值(设a=10,b=4,c=5,d=1,x=2.5,y=3.5)。

⑴a%=(b%=3)

⑵n++,a+=a-=a*=a

⑶(float)(a+c)/2+(int)x%(int)y

⑷a*=b+c

⑸++a-c+b++

⑹++a-c+++b

⑺a<

b?

x:

⑻b++==c

⑼a+b,18+(b=4)*3,(a/b,a%b)

⑽x+a%3*(int)(x+y)%2/4+sizeof(int)

⑾a<

a:

c<

d?

c:

d

⑿b++==c

⒀a*=b=c=2

⒁a=b==c

⑴0⑵0⑶9.500000⑷90⑸10⑹10⑺'

⑻2⑼4.5⑽1⑾0⑿20⒀0

下列每组表达式中,被执行后结果完全等价的是哪些(设a、b、m是已被赋值的整型变量)?

①m=(a=4,4*5)与m=a=4,4*5

②(float)(a/b)与(float)a/b

③(int)a+b与(int)(a+b)

④m%=2+a*3与m=m%2+a*3

⑤m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b

①前面是赋值表达式,而后面的是一个逗号表达式,所以一定不同;

②前面的表达式中a/b结果为一整数,结果已经取整,精度可能受到影响,之后强制float后才为浮点型,后面的是先将a转换为float后再与b相除,其值保证了精度,所以不同。

③因为a、b均为整数,其前后两个表达式的计算结果是一致的。

④前一表达式是一算术表达式,而后者为一赋值表达式,此为一点不同;

另外,前一表达式的m只被赋过一次值,后一表达式中的m曾两次被赋值,第一次赋值时与第一表达式中的值一致,第二次赋值后即不再相同。

⑤前后表达式的计算结果应该是一致的:

a=2,b=3,m=6

条件表达式x>

0?

-x的功能是什么?

如果x的值是一正数,则表达式的值为x值;

如果x的值是一非正数,则表达式的值为-x。

其实该表达式的值即为x的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在math.h头文件中。

用一个条件表达式描述从a、b、c中找出最大都赋给max.

max=a>

(b>

c?

b:

c)?

★若x为int型变量,则执行以下语句后x的值为(  )。

x=6;

x+=x-=x*x;

A.36 

B.-60 

C.60 

D.-24

B.

★若有以下类型说明语句:

charw;

intx;

floaty;

doublez;

则表达式w*x+z-y的结果为(  )类型。

A.float 

B.char 

C.int 

D.double

D.

第三章 顺序结构程序设计

变量k为float类型,调用函数scanf("

%d"

k),不能使变量k得到正确数值的原因是___。

格式修饰符与变量类型不一致。

因为%d输入的数据类型应该为十进制整数,而&

k为占用4个字节的float类型变量的地址。

★a=1234,b=12,c=34,则执行“printf("

|%3d%3d%-3d|\n"

a,b,c);

”后的输出是___。

|12341234|

分析如下:

①%3d为右对齐输出变量,且指定输出变量的值宽度为3个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。

②%-3d为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。

★设有“inta=255,b=8;

”,则“printf("

%x,%o\n"

”输出是___。

ff,10

①如果“printf("

%X,%o\n"

”则输出为FF,10。

说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“%x”则输出小写,如果是“%X”则输出大写。

②如果希望在输出十六进制时输出前导符0x或0X,则以上输出语句应改“printf("

%#x,%o\n"

”为或“printf("

%#X,%o\n"

”。

本条解释不必须掌握。

★以下程序输出的结果是___。

{

inta1=1,a2=0,a3=2;

%d,%d,%d\n"

a1,a1+a2+a3,a3-a1);

}

1,3,1

printf函数中用到格式符%5s,其中5表示输出字符占用5列。

如果字符串长度大于5,则按___输出;

如果字符串长度小于5,则按___输出。

①实际 ②左端补空格

★已定义变量如下:

inta1,a2;

charc1,c2;

若要求输入a1、a2、c1和c2的值,正确的输入函数调用语句是___。

scanf("

%d,%d,%c,%c"

a1,&

a2,&

c1,&

c2);

输入两个整型变量a、b的值,输出下列算式以及运算结果___。

a+b、a-b、a*b、a/b、(float)a/b、a%b

每个算式占一行。

如a=10,b=5,a+b输出为:

10+5=15

设inta=10,b=5;

以下为输出语句及结果:

①printf("

%d+%d=%d\n"

a,b,a+b);

10+5=15

②printf("

%d-%d=%d\n"

a,b,a-b);

10-5=5

③printf("

%d*%d=%d\n"

a,b,a*b);

10*5=50

④printf("

%d/%d=%d\n"

a,b,a/b);

10/5=2

⑤printf("

%(float)d/%d=%f\n"

a,b,(float)a/b);

(float)10/5=2.000000

⑥printf("

%d%%%d=%d\n"

a,b,a%b);

10%5=0

★输入一个非负数,计算以这个数为半径的圆周长和面积。

#definePI3.1415926

floatr,l,area;

Inputapositive:

%f"

r);

l=2*PI*r;

area=PI*r*r;

l=%f\tarea=%f\n"

l,area);

输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。

intx,y;

Inputanumber(100-999):

x);

y=100*(x%10)+10*(x/10%10)+x/100;

/*注意分析此处算法*/

%d--->

x,y);

★输入任意大小的3个整数,判断其中是否有两个奇数一个偶数。

若是则输出YES,不是则输出NOT(要求用条件表达式进行判断,不使用if语句)。

intx,y,z,oddcount=0;

 /*奇数数计数变量*/

Inputx,y,z:

x,&

y,&

z);

x%2==1?

oddcount++:

0;

y%2==1?

z%2==1?

oddcount==2?

printf("

YES"

):

NOT"

11

求前驱字符和后继字符。

输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这3个字符及其对应的ASCII码值。

本题考查同学们对字符类型数据的认识,如果在ASCII范围内则即可以显示为字符,又可以显示为整数值;

无论是否能够显示为字符,字符类型数据是可能参与数值运算的,切记。

charc;

Inputcharacter:

%c"

%c----->

c-1,c-1);

c,c);

+1,c+1);

getch();

/*为便于调试程序,运行至此程序停顿,此时可以看到运行结果,按任意键程序真难得结束并返回到编辑环境*/

12

★输入三角形的边长,求三角形面积(面积=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2)。

#include"

math.h"

/*由于程序中使用了开平方函数sqrt(),所以需要包含数学头文件*/

floata,b,c,s,area;

intok=0;

Inputa,b,c:

%f,%f,%f"

a+b>

ok++:

/*以下3条语句为判断是否输入的数据是否构成封闭三角形*/

a+c>

b+c>

a?

ok==3?

(s=(a+b+c)/2,area=sqrt(s*(s-a)*(s-b)*(s-c)),printf("

area=%f"

area)):

error"

第四章 选择结构程序设计

★设x、t均为int型变量,则执行语句“x=10;

t=x&

&

x>

10;

”后,t的值为___。

★假定所有变量均已正确定义,则程序段:

inta=0,y=10;

if(a=0)y--;

elseif(a>

0)y++;

elsey+=y;

运行后y的值是___;

20

★能表述20<

x<

30或x<

-100的C语言表达式是___。

20&

30||+x<

-100

★若有定义语句“inta=25,b=14,c=19;

”,则以下语句执行结果是___。

if(a<

=25&

b<

=2&

c)

***a+b=%d,a-b=%d***\n"

a+b,a-b);

elseprintf("

***a=%d,b=%d,c=%d***\n"

a,b,c);

***a=25,b=14,c=19***

★假定i和j为int型变量,则执行以下语句后i的值是___。

inti=1;

switch(i)

case1:

{for(j=0;

j<

9;

j++)i+=j;

break;

case2:

{for(j=1;

case3:

i++;

37

分析:

执行了case1:

和case3:

中的代码。

同时case1:

语句中的{ }是可以取消的。

★以下两条if语句可合并成一条if语句,即___。

=b)x=1;

elsey=2;

if(a>

b)printf("

***y=%d\n"

y);

***x=%d\n"

x);

=b)printf("

x=1);

y=2);

★输入两个字符,若这两个字符的序号(ASCII码)之差为偶数,则输出它们的后继字符,否则输出它们的前驱字符。

chara,b;

Inputtwochatactera,b:

%c,%c"

b);

if((a-b)/2==0)

a+1,b+1);

elseprintf("

a-1,b-1);

★输入整数a和b,如果a能被b整除,就输出算式和商,否则输出算式、整数商和余数。

inta,b;

Inputtwointegernumbersa,b:

%d,%d"

if(b!

=0&

a%b==0)

%d/%d=%d"

else

%d/%d=%d......%d"

a,b,a/b,a%b);

输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心坐标为(2,2),半径为1。

include"

floatx,y,d;

Inputx,y:

%f,%f"

y);

d=sqrt((x-2)*(x-2)+(y-2)*(y-2));

if(d>

1)printf("

outside"

elseif(d<

inside"

★输入年号和月份,输出这一年该月的天数(一个年份,先判断是否闰年)。

inty,m,d,f;

Inputyearandmonthy-m:

%d-%d"

m);

f=(y%4==0&

y/100!

=0||y/400==0);

if(m==2)

d=28+f;

/*依据是否闰年决定2月份的实际天数,若是闰年,则f=1,d即为29天*/

d=31-(m==4)+(m==6)+(m==9)+(m==11);

/*m==4时其值为1,则本月为30天,典型算法,重要啊*/

%d-%dis%ddays.\n"

y,m,d);

★请将以下语句改写成switch

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

当前位置:首页 > 人文社科 > 法律资料

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

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