曹计昌《C程序设计》课后习题答案

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

第一章习题

1.4

原码:对于一个二进制数X,如果规定其最高位为符号位,其余各位为该数的绝对值,并且规定符号位值为0表示正,为1表示负,采用这种方式的二进制编码称为该二进制数X的原码。

补码:正数的补码等于正数的原码,负数的补码为其原码除符号位不动外,其余各位变反再加1所得。

反码:对于正数而言,反码与原码相同;对于负数而言,反码符号位的定义与原码相同,但需要将对应原码的数值位按位变反。

1.5和:10101010

差:00010000

1.6和 01073

差 -0337

1.7和 0x1AABA

差 -0x5320

1.8

(251)10=(11111011)2=(373)8=(FB)16

1.10

在16位机中,[157]补= 11101

[-153]补= 1111111101100111

157-153=157+(-153)

= 11101) 2+(1111111101100111) 2=00100) 2=(4) 10

1.14

算法设计:用变量s存储累加和,k表示计数

描述为:

(1)定义变量s,k。

(2)s清零,k赋初值1。

(3)判断k<101?如果是,顺序执行(4);否则转步骤(5);

(4)k加到累加和变量s中,k加1;转步骤(3)。

(5)输出累加和s。

(6)结束。

开始

结束

int s=0,k=1;

k<101?

s=s+k;

k=k+1;

输出s

N

Y

1.16

第二章习题

2.2

(1) x, ++, +, y

(2)-, 0xabL

(3)2.89e+12L

(4)”String+\” FOO\””

(5)x, *, *, 2

(6)”X??/”

(7)a, ?, b

(8)x, --, +=, y

(9)intx, =, +, 10

(10)”String”, “FOO”

2.3

不是表识符的如下:

4th 首字母为数字 sizeof关键字

x*y *不是字母、数字、下划线

isn’t ’不是字母、数字、下划线

enum 关键字

2.4

合法常数:

.12 0.L 1.E-5 3.F 浮点型常量

2L 33333 0377UL 0x9cfU 整型常量

“a”“”字符串常量

‘\45’‘\0’‘\a’字符常量

非法常数:

‘‘’必须用转义序列

0x1ag 十六进制没有g

E20 没有尾数部分

‘\18’要用八进制数

‘\0xa’格式错误,可以是’\xa’

“3’4””需要转义序列

‘”’需要转义序列

2.5

(1)int a, b=5;

(2)double h;

(3)int x=2.3; 0.3 会被截取。

(4)const long y=1; 必须赋初值

(5)float a= 2.5*g; g 没有定义。

(6) int a=b=2; 在 turbo C 中编译出错:未定义的符号’b’在main函数中。

2.6

(4)6

(5)8

(6)0

(7)3.00

(8)1

(9)108

(10)0

2.7答案不确定

(1)a==b==c c未定义

(2)正确

(3)正确

(4)正确

(5)a*++-b 表达式缺值

(6)a||b^i ^运算的操作数必须是整型,而i不是(7)i*j%a %运算的操作数必须是整型,而a不是(8)正确

(9)正确

(10)int(a+b)应该改成(int)(a+b)

2.9

(1)0

(2)-2

(3)65535

(4)5

(5)60

(9)65532

(10)3

2.10

unsigned long encrypt(unsigned long x)

{

unsigned long x0,x1,x2,x3,x4,x5,x6,x7;

x0=(x & 0x0000000F) << 8;

x1=(x & 0x000000F0);

x2=(x & 0x00000F00) << 8;

x3=(x & 0x0000F000);

x4=(x & 0x000F0000) << 8;

x5=(x & 0x00F00000);

x6=(x & 0x0F000000) >> 24;

x7=(x & 0xF0000000);

return(x0|x1|x2|x3|x4|x5|x6|x7);

}

2.11

#include

void main()

{

unsigned long in;

unsigned long a,b,c,d;

scanf("%ld",&in);

a=(in&0xff000000)>>24;

b=(in&0x00ff0000)>>16;

c=(in&0x0000ff00)>>8;

d=in&0x000000ff;

printf("%d.%d.%d.%d",a,b,c,d);

}

2.15

((k >>8)& 0xFF00) | ((p & 0x00FF)<<8)

2.16

max=a>b?a>c?a:c:b>c?b:c;

max=a > b ? ((a > c) ? a : c):((b > c) ? b : c);

2.17

X=y>>n

2.18

(c>=’0’ && c<=’9’)? c –‘0’ : c

2.19

(a % 3 == 0) && (a % 10 == 5) ? a : 0;

第三章习题

3.1函数原型是指对函数的名称、返回值类型、参数的数目和参数类型的说明。其规定了调用该函数的语法格式,即调用形式。

putchar函数的原型为:int putchar(int c);

puts函数的原型为: int puts(const char *s);

printf函数的原型为:int printf(const char *format,…);

getchar函数的原型为:int getchar_r(void);

相关文档
最新文档