标准C语言程序设计及应用周纯杰版习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 … }