曹计昌C程序设计课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]补= 0000000010011101
[-153]补= 1111111101100111
157-153=157+(-153)
= (0000000010011101) 2+(1111111101100111) 2=(0000000000000100) 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 *不是字母、数字、下划线
temp-2 -不是字母、数字、下划线
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
(1)4
(2)0
(3)1
(4)6
(5)8
(6)0
(7)3.00
(8)1
(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
(6)113
(7)-2
(8)-1
(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;