这个暑假在学校里学习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当作实型常量算术运算使用,显然是不可以的。而认为是常量,认为是实型常量就可以直接使用了。