C++教程第2版勘误:代码修正与优化详解

需积分: 4 2 下载量 19 浏览量 更新于2024-09-14 收藏 86KB DOC 举报
《C++程序设计教程第2版》第2次印刷的勘误主要包括几个关键部分的错误和建议。首先,在P50的例4.17程序中,作者发现了一个多余的语法细节:在输出语句中,`cout`的两个`setw(12)`之间的字符串`"f1"`和`"f2"`实际上是多余的,因为它们在接下来立即被变量`f1`和`f2`的值替换。正确的代码应删除这两个多余的双引号,使其简化为: ```cpp void main() { int f1, f2; f1 = f2 = 1; for (int i = 1; i <= 20; i++) { cout << setw(12) << f1 << setw(12) << f2; if (i % 2 == 0) cout << endl; f1 = f1 + f2; f2 = f2 + f1; } } ``` 其次,在P94的例7.10的`prime`函数中,用于检查素数的部分有小误。原始代码中`for`循环的注释提到`a[0]`不是素数,但代码本身并未使用到它,所以可以从`a[1]`开始判断。修正后的代码删除了多余空行,保持简洁: ```cpp void prime(int a[], int n) { int i, j; for (i = 1; i < n / 2; i++) // 从a[1]开始判断 if (a[i] != 0) for (j = i + 1; j < n; j++) if (a[j] != 0) if (a[j] % a[i] == 0) a[j] = 0; } ``` 最后,在P107的例子中,有一段红色字体的描述应该调整位置,以便更好地引导读者理解。这部分描述原本放在代码示例之后,现在应该下移到“请读者比较这两个方法。”这一提示前面,以便于阅读和教学: ```cpp 例7.25 输入一行字符,统计其中的单词个数,单词之间用空格隔开。 本算法中,求单词数的方法为:顺序扫描数组元素,若当前字符是非空格,而其前一个字符是空格,则单词数加1。 #include<iostream.h> #include<string.h> int countWords(char string[]) { int i, len, num = 0; // ... (剩余代码) ``` 这些勘误旨在帮助读者更好地理解和学习C++编程,确保了教材内容的准确性和一致性。通过改正这些问题,学生在实际操作时可以避免类似的错误,提升编程技能。