标准C语言程序设计及应用周纯杰版习题参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

注:以下容为教材部分习题答案,如发现错误请告知,欢迎讨论——惕远

习题二

一、选择题

1、C

2、BCD

3、A

4、A(注:本题强调用户标识符,所以if、int不是,但是sin是用户标识

符,原因是库函数不是标准语法成分,开发库函数的程序员也是用户,

main虽然不是语法成分,但开发平台预定义了main为console application的执行入口,并且规定了定义格式,所以用户不能用作它用,但_main可以)

5、(D)(C)

6、C

7、D

8、B

9、A

10、 D

11、B(注:本题是求strlen("\\\”DEF\”\\”)的值,即字符串中有效字

符的个数,不含串结尾符,sizeof(“…”)的值与前者不同,含串结尾符)

12、 D

13、 C

14、 D

15、 A

16、 B

17、 A

18、 B

二、判断题

(对)(错)(错)(对)

三、填空题

1、B 66回车

2、n1=%d\nn2=%d

3、5

四、计算下列各表达式的值

1、注:本书假设采用16位编译平台,所以int和unsigned int均为2字节类型。

(1)47

(2)38

(3)9

(4)0xFFC6 or 65478

(5)104

(6)2

2、(1)6

(2)50

(3)1

(4)-16 or 0xFFF0

(5)1

(6)20

3、表达式值a的值b的值

(2)1 5 3

(3)3 1 3

(4)15 10 4

(5)8 8 3

(6)1 5 3

4、表达式值x的值y的值

(1)12 25 2

(2)0 24 3

(3)1 24 3

(4) 27 24 3

(5) 1 24 3

(6)6 6 3

(7)24 24 24(y<<=3)

(8)27 24 3

(9)-29or0xffe3 24 3

以上类型均为int

5、表达式值x的值y的值

(1)0 0 1

(2)1 2 1

(3)1 0 0

(4)-3 -3 3

以上类型均为int

五、程序分析题

b=20(注:中间4个空格)a=3600回车

习题三

一、填空题

1、s=6回车

2、s=96回车

3、(1) c=getchar() or scanf(“%c”,&c)

(2) c-32 or c-‘a’+’A’

习题四

一、写出程序运行结果:

1、no 1 a=1no 1 a=0no 1 a=1no 1 a=0(注:教材中关于func函数的原

型有错,应该改为:void func();)

2、a=0 b=0 c=0

a=1 b=0 c=0

a=2 b=0 c=0

3、main:x=5,y=1,n=1

fun:x=6,y=21,n=11

main:x=5,y=1,n=11

fun:x=8,y=31,n=21

习题五

一、选择题和填空题

1、D

2、D

3、C

4、6

5、CDABC

6、(1)j+=2

(2)a[j]>a[i]

(注:教材中for语句有错,应该去掉表达式3后面的分号“;”)

最后输出为u nalggace

7、(1) s[j] (2)s[j]

8、D

9、B

10、 6

11、isdigit(s[i])该带参数的宏用来判断字符s[i]是不是数字字符,该宏

的定义在头文件ctype.h中

12、‘\0’和str1[i] -str2[i]

二、1、第7行sum=0;

第10行改为:scanf(“%d”,&a[i][j]);

习题六

一、选择题

1、 D

2、 D

3、 D

4、 C

5、CD

6、 D

7、 B

8、 B

二、填空题

1、*(p+3) 2 22

2、cdefg

bcdefg

abcdefg

7

3、6385

三、程序分析题

9、第5行改为:p =&s[0]; or p=s;

10、第4,5行合为:double x,y,*p;

11、第4行改为:int x,*p=&x;否则p为“野指针”或者在给p赋值

之前定义一个int变量y,然后p=&y;

12、第4,5行交换书写次序。

习题七

一、选择题

1、 A

2、 D

3、 B

4、 D

5、 C

6、 A

7、 B

二、程序填空题

1、a[k] a[k] a[k]

2、a[i] j 6 or i+1

三、改错题

1、第3行最后加分号“;”

第4行改为:void main( )

第7行去掉三个& 运算符

第8,9行改为:

if(strcmp(a,b)>0)swap(a,b);

if(strcmp(b,c)>0)swap(b,c);

if(strcmp(a,b)>0)swap(a,b);

swap函数改为:

void swap(char *pstr1,char *pstr2)

{

char p[80];//千万不能用char *p;没有赋初值即为“野指针”,危险!

strcpy(p,pstr1);

strcpy(pstr1,pstr2);

strcpy(pstr2,p);

}

2、第1行后面加入:

float process(float * , int , int *);

void main( )

int m;定义后加入:float max;

process定义改为:

float process(…)

{

float temp=p1[0]; 或改为:=*p1

*p2 =p1[0];//插入

for(x=1;x

}

相关文档
最新文档