《C 语言程序设计》勘误表
页码
位置
原文
修改为
P2
第 2 行
C 语言共有 34 种运算符,
C 语言共有 45 种运算符,
P12
第 4 行
如换行字符 \n、退格字符 '\b'等。
如换行字符 '\n'、退格字符 '\b'等。
P14
第 15 行
例如,实数 -32.28E-2 0 的存储
例如,实数 -32.28E-2 2 的存储
P20
第 13 行
对于原来的数值乘以 2n 再取 216 的模
对于原来的数值乘以
2n 再取 28 的模
main()
main()
{ unsigned int a=65535;
{ unsigned short
a=65535;
P36
例 3-3
int b=-2;
short
b=-2;
printf( “ a=%d,%o,%x,%un” ,a,a,a,a);
printf(
“ a=%hd,%ho,%hx,%hu n” ,a,a,a,a);
printf( “ a=%d,%o,%x,%un” ,a,a,a,a);
printf(
“
n”,b,b,b,b);
}
}
P36图 3-4
P79【例 5-2】
P83第 8 行
用公式
1
1
1
1
1
4
3
5
7
9
【思考】例
5-5 中,如果输入
n=8,结果为 8!=-25216 。
为什么?
因为 8!=40320 超出了 int( 整型 )变量 32767 的范围 而发生溢出性错误,因此在编程时要合理的选择变量的定义类型。
上例中要求更大整数连乘的结果,需要sum 类型修改为long
用公式
1
1
1
1
1
5
7
9
4
3
【思考】例 5-5
中,如果输入
n=17,结果为 17!= - 0。为什
么?
因为 17!=128 超出了 int 型正数的范围231- 1 而发生溢出性
错误,因此在编程时要合理的选择变量的定义类型。上例中要求
更大整数连乘的结果,需要 sum 类型修改为double 类型, 在输出
1
类型,在输出时按照 long 型格式 “% ld ”输出即可。
时按照 格式 “% .0lf ”输出即可。
P83
第 13 行
(1)对比 for 循环流程 图 5-9 和 while 循环流程图 5-2,
( 1)对比 for 循环流程 图 5-10 和 while
循环流程图 5-2,
P104
第 13 行
因此每个元素相当于一个
整型 变量(又叫下标变量) ,
因此每个元素相当于一个
普通 变量(又叫下标变量) ,
P109
第 18 行
但不能写成 s[2,1+3] 、
但不能写成 s[2,n+3] 、
P110
图 6-7 下
每个存储单元 2 个字节 。
每个存储单元 在 VC 环境为 4 个字节,在 TC 环境为 2 个字节 。
第 6 行
P116
第 3 行
这种方式比逐个 字符赋 初值书写起来方便得多。
这种方式比逐个 赋字符 初值书写起来方便得多。
P119
第 16 行
(1)字符串复制函数 strcpy,形式为:
( 1)字符串复制函数
strcpy,调用 形式为:
P119
第 23 行
②字符串可以是字符串常量、字符数组名、字符数组元素地
② 源字符串可以是字符串常量、字符数组名、字符数组元素地址
址等,代表源字符串 。
(代表从该元素开始至
'\0'之前的子字符串) 等。
P120
第 5 行
(2)字符串连接函数 strcat,形式为:
( 2)字符串连接函数
strcat,调用 形式为:
①字符数组必须定义得足够大,以便能存入
指定 的字符串。
①字符数组必须定义得足够大,以便能存入
连接后 的字符串。
P120
第 10 行
字符数组名若换成字符数组元素地址,将从该元素处开始复
制。
(注:后面一句话删除)
P120
第 12 行
②字符串可以是字符串常量、字符数组名、
字符数组元素地
②字符串可以是字符串常量、字符数组名
、也可以是代表子字符
址等,代表字符串 。
串的字符数组元素地址等
。
P120
倒数第 12 行
(3)字符串比较函数 strcmp,形式为:
( 3)字符串比较函数
strcmp,调用 形式为:
P121
第 15 行
(4)测字符串的长度函数
strlen,形式为:
( 4)测字符串的长度函数
strlen,调用 形式为:
P129
第 5 行
各维的下标均从
0 开始,上限是 数组 长度减 1。
各维的下标均从 0 开始,上限是 各维 长度减 1。
P136
倒数第 12 行
int 型的变量需要
2 个字节 (TC 情况,在 VC 情况下 int 型单元
short int 型的变量需要
2 个字节