注:以下内容为教材部分习题答案,如发现错误请告知,欢迎讨论——张惕远
习题二
一、 选择题
1、 C
2、 BCD
3、 A
4、 A(注:本题强调用户标识符,所以ifint不是,但是sin是用户标识符,原因是库函数不是标准语法成分,开发库函数的程序员也是用户,main虽然不是语法成分,但开发平台预定义了mainconsole 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
二、 判断题
(对)(错)(错)(对)
三、 填空题
1B  66回车
2n1=%d\nn2=%d
35
四、 计算下列各表达式的值
1、注:本书假设采用16位编译平台,所以intunsigned 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的值
    (1)0            5            3
    (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            24y<<=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
    (5)4            2            4
以上类型均为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
c语言程序设计教材答案
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、第7sum=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
2cdefg
bcdefg
abcdefg
7
    36385
三、 程序分析题
9、 5行改为:p =&s[0];  or  p=s;
10、 45行合为:double x,y,*p;
11、 4行改为:int x,*p=&x;否则p为“野指针”  或者在给p赋值之前定义一个int变量y,然后p&y
12、 45行交换书写次序。
习题七
一、 选择题
1、 A
2、 D
3、 B
4、 D
5、 C
6、 A
7、 B
二、 程序填空题
1a[k]        a[k]            a[k]
2a[i]            j            6 or i+1
三、 改错题
1、 3行最后加分号“;”
4行改为:void main( )
7行去掉三个& 运算符
89行改为:
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);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。