《C语言程序设计》第三版(谭浩强著)错误集

这个暑假在学校里学习C语言,发现《C语言程序设计》第三版(谭浩强著)中有不少错误或者是需要改进的地方,虽然是本人的愚见,但大家一起来完善这本畅销书是共同的责任。

下面就将本人认为需要改进的地方如下:

1.p7,1.14小节第一段最后一句“形成可执行的目标程序”可改为“形成可执行的目标程序(executable)”;

2.p42,第6、7行“如果指定signed,为无符号型”改为“如果指定signed为无符号型”,逗号多余;

3.p97,倒数第7行“print(“%f”,x);”改为“printf(“%f”,x);”;

4.p118,第14行“for(循环变量赋初值;循环条件;循环变量增值) 语句”改为“for(循环变量赋初值;循环条件;循环变量增值或减值) 语句”;

5.p131,第5行,“数组是有序数据的集合”改为“数组是有序下标数据的集合”;

6.148,第8行,“(1)字符数组1必须定义的足够大,以便容纳被复制的字符串”,然而,我用的Turbo c2.0对此没有要求,理论上应是那样,但是实际上可以删掉此规则;

7.p149,第5行,“直到出现不同的字符或遇到'\0'为止”改为“直到出现不同的字符或者两个字符串都遇到'\0'为止”;

8.p172,第17行“age(n-1)+2 n>1”改为“age(n-1)+2 1<n<=5”;

9.p178,第3行“有两个数组a和b”改为“有两个整型数组a和b”;

10.p281,图11-1“Li Fun”是什么东西?是汉语拼音名字吗?应该是,然而“fun”怎么拼呢?汉语词典中根本没有这个拼音,不存在的东西却被他屡次用得不亦乐乎,谭浩强不会连汉语拼音都还没过关吧?

11.预处理命令宏定义的问题。我认为不管是有参宏定义还是无参宏定义,它的定义都有问题,即“#define 标识符 字符串”、“#define 函数 字符串”,他将后面的称为“字符串”不妥,应改为“常量”。试想字符串能被替换成整型常量或者实型常量使用吗?而“常量”的定义是“不能改变的量”,它包括整形常量、实行常量、字符型常量,这样就可以直接被替换和使用了。下面用程序说明这个问题:

#define PI 3.141592654

#define S PI*r*r

main()

{float r;

scanf(“%d”,&r);

printf(“%f”,S);

}

试想,如果将3.141592654认为是字符串,运行时将被直接替换,然后求S时,又将3.141592654当作实型常量算术运算使用,显然是不可以的。而认为是常量,认为是实型常量就可以直接使用了。

我没第三版的,以前看过第二版的,感觉通俗易懂,就是太啰嗦,呵呵,初学用不错!楼主看的很仔细,看来也做过试验了,呵呵,不过还是有问题的。
2 signed 貌似是 有符号类型 无符号是unsigned
4 专业术语就叫增值,增值包含负值
6 有这个要求的,你这样试试就明白了。
char a[10];
char b[10];
strcpy(a, "0123456789012345");
printf("%s", b);
我给a赋值,溢出了,影响到了b,这在大型工程里就是不可估量的隐患。
7 不是两个字符串都遇到'\0',是任一字符串遇到'\0'
10 Fun 这个一般是Function(函数)的缩写,至于前边加个Li,是什么缩写我不知道,Line?或者就是李(某个姓李的写的这个函数)?
11 我觉得把字符串改叫表达式更好一点,因为宏定义不仅能替换常量的,比如判断表达式a与b(注意可以是表达式)谁大的“宏函数”
#define MAX(a, b) ((a) > (b) ? (a) : (b))
貌似作者的“字符串”的意思很单纯,就是字符串,而不是一种类型,我现在写的东西不都是“字符串”吗?o(∩_∩)o...
还有,BS一下二楼的,有本事你写一本卖1000万册的?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-19
无语了,除了printf的印刷错误,其余的不是瞎挑毛病就是胡言乱语,建议提问者认真看书,别学个皮毛就敢大言不惭,简直误人子弟。
宏定义只是简单的字符替换,根本不在参与语句的执行,而是在之前编译时置换到程序代码内,根本不参与运算,更无什么类型之别。
宁举的例子里,语句中的 S 只是在编译时简单置换为 3.141592654*r*r

即该句变成

printf(“%f”,3.141592654*r*r );
再执行。
建议作为初学者不要一有疑问就来质疑权威,自己多看两遍书,谦虚问问别人。
第2个回答  2012-02-23
还有 p303
end; 应该改为 end:
第3个回答  2008-08-17
赞!!
楼主这种精益求精和为他人服务的精神很值得大家学习。
没有看这本书,只有精神上支持了!本回答被网友采纳
相似回答