注意:下面的勘误中,红色字体为修改后的文字,提请各位读者注意。
- 第6页,” 1.6语言标准”中的第3行,将1987年修改为1978年。
- 第22页,” 2. main()函数”中的第1行,int main (void)后面的分号(;)删除。
- 第24页,“5. 声明”的第10行,也就是一个变量、函数或其他实体的名称。
- 第27页,图2.3中,下划线应该只包含括号中的内容;第2段的第4行,而不是存储在源代码中的指令。
- 第30页,“2.5.4 打印多个值”的第4行,双引号后面的第1个变量。
- 第34页,“2.7.3 程序状态”第2段的第4行,要尽量忠实于代码来模拟。
- 第35页,“2.10 本章小结”第2段的第1句,声明语句为变量指定变量名,并标识该变量中存储的数据类型;本页倒数第2行,即检查程序每执行一步后所有变量的值。
- 第37页,“2.12 编程练习”中第1题,把你的名和姓打印在一行……把你的名和姓分别打印在两行……把你的名和姓打印在一行……把示例的内容换成你的名字。
- 第40页,第1行,用于把英磅常衡盎司转换为……
- 第44页,“3.4 C语言基本数据类型”的第1句,本节将详细介绍C语言的基本属性类型……
- 第46页,“5. 八进制和十六进制”的第4句,十六进制数3的二进制数是0011,十六进制数5的二进制数是0101;“6.显示八进制和十六进制”的第1句,既可以使用也可以显示不同进制的数;将“回忆一下……程序在执行完毕后不会立即关闭执行窗口”放到一个括号里。
- 第47页,“2.使用多种整数类型的原因”第3句,过去的一台运行Windows 3.x的机器上。
- 第53页,图3.5下面的第4行“上面最后一个例子(printf(“Gramps sez, \”a \\ is a backslash.\”\n”);)”
- 第56页,正文的第2行和第4行应该分别为printf(“me32 = %“ “d” “\n”, me32); printf(“me32 = %d\n”, me32);
- 第61页,“无符号类型”的最后1句,相当于unsigned int(即两者之间添加一个空格)。
- 第62页,程序清单3.8中的第1行,将//* typesize.c -- 打印类型大小*/中的第一个斜杠删除。
- 第63页,“3.6参数和陷阱”第2行,printf(“Hello,pal.”)(即Hello,和pal.之间没有空格)。
- 第64页,程序清单3.10中的第1行,使用转义序列。
- 第75页,倒数第8行,何时使用圆括号取决于运算对象是类型还是特定量。
- 第82页,第11行,……格式字符串包含了两个待打印项number和pies对应的……
- 第83页,表4.4中的“L”修饰符的含义介绍中,应该是示例:”%Lf”、“%10.4Le”
- 第84页,表4.5中的第1行,即,从字段的左侧开始打印该项(即,应该只保留一个项);在“0”标记的含义中,添加一行:示例:"%010d"和"%08.3f"。
- 第86页,第1段的第2行,……字段宽度是容纳待打印数字所需的……;倒数第4段中,根据%x打印出1f,根据%X打印出1F
- 第87页,“4.4.4转换说明的意义”第2段,……读者认为原始值被替换成转换后的值。
- 第89页,“参数传递”第2行,把变量n1、n2、n3和n4的值传递给程序(即,保留一个顿号)。
- 第93页,第5行的2121.45的字体应该与第4行的42的字体保持一致;表4.6上面的最后一行,对于double类型要使用1修饰符。
- 第94页,表中的第3行,把对应的数值存储为unsigned short int类型;把“j”转换说明的示例放到“z”转换说明中;在“j”转换说明的含义中添加:示例:”%jd”、”%ju”。
- 第95页,“3.scanf( )的返回值”上面一段的倒数第3行,如果在格式字符串中把空格放到%c的前面。
- 第98页,倒数第2段,strlen( )函数(声明在string.h头文件中)可用于……。
- 第100页,”4.8编程练习”中的第2题,将该题中的“名和姓”统一替换为“名字”;并执行以下操作;第3题,将a、b项中的“输入”替换为”The input is”,将“或”替换为“or”,将末尾的分号换成点(.)。
- 第105页,第8行,由于19.0不小于18.5,所以该条件为假。
- 第107页,程序清单5.3下面的第1行,首先把68赋给jane。
- 第111页,图5.3下面的第1行,如何让加法运算在除法运算之前执行。
- 第117页,程序清单5.11结束后的第4行,而pre_b是b递增之后的值。
- 第118页,倒数第2行,而不是(x*y)++。
- 第129页,程序清单5.15的第4行,//1小时的秒数。
- 第134页,“5.11编程练习”中的第4题,168.7 cm = 5 feet, 6.4 inches
- 第143页,正文第2段,假设你想跳过输入到达第1个既不是空白字符也不是数字的位置
- 第148页,倒数第3行,高优先级组: < <= > >=(即在<和<=之间有空格,在>和>=之间有空格)
- 第153页,第7行的“15”与下一行的“28”左对齐。
- 第161页,“小结:do while语句”中的倒数第4行,在expression为假或0之前(注意要用斜体)
- 第167页,程序清单6.20的名字应该是power.c程序(即删除一个w)
- 第170页,“6.15复习题”第1题,后5行中使用的是前一行生成的quack的值。
- 第175页,第10题的第3句话,用户输入的上限整数等于或小于下限整数为止。
- 第178页,中间部分的文字中,if语句指示几岁安及,如果刚读取的值(temperature)小于0。
- 第185页,正文第2段,特别要注意的是,如果kwh大于360;中间代码之后的第1句,也就是说,该程序由一个if else语句组成(即,if和else之间要有一个空格)
- 第187页,正文倒数第2段,倒数第3行,2和72、3和48、4和36。
- 第196页,代码中第2行,达到单词的末尾。
- 第212页,复习题的第4题,下列各表达式的值是多少。
- 第215页,第2题的第2句话,每行打印8个“字符-ASCII码”组合;第7题的a项中,10.00美元/小时。
- 第222页,“8.4重定向和文件”的第2句话,输入设备(我们假设)是键盘;“8.4.1UNIX、Linux和DOS重定向”的上面一段,重定向的一个主要问题是它与操作系统有关;苹果OS X运行在UNIX上,故可用Terminal应用程序来使用UNIX命令行模式。
- 第224页,“3.组合重定向”中的第2、4、6行中,应该是分别是./echo_eof < mywords > savewords、./echo_eof > savewords < mywords、./echo_eof < mywords > mywords….; 第13行应该是./echo_eof<words;第16、17、18、19行的多买中,均在最前面添加./
- 第225页,“小结:如何重定向输入和输出”中的4行代码中,均在前面添加./
- 第227页,正文中间,该程序还是会把f视为n(即这里将“被”删除)。
- 第245页,倒数第6行中,程序中starbar( )和main( )的定义形式相同。
- 第247页,“9.1.3 函数参数”中第2段最后1行,因此,可以调用show_n_char( ‘ ‘, 12)(即两个单引号之间是一个空格)
- 第260页,第19行,因此,n乘以n-1的阶乘就得到n的阶乘。
- 第268页,程序清单9.13上面的一行,在interchange( )中使用u和v。
- 第272页,倒数第7行,让interchange( )访问这两个变量。
- 第273页,“变量:名称、地址和值”中第3段第2行,使用变量名即可获得变量的数值。
- 第276页,“9.11编程练习”第6题,把最小值放入第一个变量;第10题,编写一个to_base_n()函数接受两个参数,且第2个参数在2~10范围内,然后以第2个参数……。
- 第285页,第11行,float rain[5][12];(即float和rain之间有一个空格);图10.1上面的一句话,则使用rain[1][2];顺便将括号以及括号中的文字删除。
- 第289页,图10.3上面一段的第2行,这意味着加1后的地址是下一个元素的地址(即,将“把”删除)
- 第290页,第1行,dates + 2 == &dates[2]
- 第295页,第3行,至于C语言,ar[i]和*(ar+i)这两个表达式都是等价的。
- 第305页,正文倒数第3段,第2行,指向一个内含3个int类型元素的数组;pa指向一个内含3个int类型元素的数组。
- 第307页,程序清单10.17上面的一段,这样的变量稍后能以同样的方式用作junk。
- 第316页,第6题,在a、b、c这3项的后面添加“的地址”
- 第322页,上面第2行代码,I am a symbolic string constant.(即,将an换成a,将old-fashioned删除)
- 第326页,“5.字符串数组”上面的一句,如果打算修改字符串,就不要用指针指向字符串字面量;“5.字符串数组”下面的一句,创建一个字符数组通常很方便(即将“如果”删除,将“会”换成通常)。
- 第332页,最后一段的第1句,fgets( )函数返回指向char的指针。
- 第336页,图11.3中“输入语句”栏,将这三个均修改为scanf(“%5s”,name);
- 第348页,正文倒数第2段,并编写一个函数把输入的内容都转换成大写
- 第356页,正文最后一段的第1句,程序清单11.28中的程序用sprintf( )把3个项
- 第358页,第一行,该函数返回指向s字符串首次出现的c字符的指针
- 第366页,正文第3段,如果字符串仅以整数开头,atoi()函数也能处理
- 第370页,第5题的e项,如果用*pc--替换*--pc,会打印什么
- 第371页,“11.13编程练习”第1题,从输入中获取n个字符(即将“下”删除)
- 第372页,第8题,如果第2个字符串包含在第1个字符串中;第10题,该程序应该应用该函数读取每个输入的字符串,并显示处理后的结果;第11题,编写一个程序
- 第374页,第2段,内含这些字符值的字符串字面量就是一个对象,由于字符串字面量中的每个字符都能被……
- 第382页,“12.1.7外部链接的静态变量”第3行,放在所有函数的外面(即将其中一个“在”删除)
- 第383页,正文最后一段第2行,外部变量Hocus对main()和magic()均不可见
- 第391页,正文第1段,在这个文件中不要求写出该函数定义。
- 第394页,正文最后一段,都要包含diceroll.h头文件。
- 第396页,正文第2段,对于读取骰子的点数
- 第406页,正文第3段第1行,但是memmove()没有这样的要求。
- 第407页,将正文第2段删除。
- 第422页,中间的代码中,第1行和第11行应该是./addaword
- 第423页,第4行,如果未遇到EOF则返回之前传给它的第一个参数地址。
- 第425页,正文第2段,ftell()函数返回类型是long,它返回的是参数指向文件的当前位置距文件开始处的字节数。
- 第426页,“13.5.4 fgetpos()和fsetpos()函数”中的正文第3段,该值描述了文件中的当前位置距文件开头的字节数;第5段,来设置文件指针指向偏移值后指定的位置。
- 第427页,第2段第2行,文件中的缓冲大小数据块就被拷贝到缓冲区中;图13.2的图题是ungetc()函数。
- 第444页,程序清单14.2中,建立book模板
- 第450页,倒数第5行,如果barney是一个guy类型的结构变量,可以这样写;倒数第3行,结构变量名并不是结构的地址,因此要在结构变量名前面加上&运算符。
- 第451页,“14.6.2用指针访问成员”第3段正文,换句话说,指向结构的指针后面的->运算符和结构变量名后面的.运算符工作方式相同;下一段,但是him->income是该指针所指向结构的一个成员(即,将字母e去掉)。
- 第453页,正文第2段,使得指针money指向变量stan;下一段的第2行,结构变量名不是其地址的别名。
- 第470页的代码中,将$ booksave修改为$ ./booksave
- 第471页第5行,rewind()函数确保文件指针位于文件开始处。
- 第474页,“总结:结构和联合运算符”中,该运算符与结构变量或联合变量名一起使用,指定结构变量或联合变量的一个成员。如果name是一个结构变量的名称……下面标识了该结构变量的这个成员;该运算符和指向结构或联合的指针一起使用,标识结构变量或联合变量的一个成员。
- 第530页,正文第2行和第4行的代码,开头应该是printf(即当前少了字母f)
- 第533页,倒数第8行,将第1句中的getc(stdin)和getchar()互换。
- 第548页,倒数第4行,即在原函数名后加上f或l后缀。
- 第553页,第1行,qsort()原型中的第4个参数确定了比较函数的形式
- 第574页,将第5行代码current = head;删除;将第7行代码移动到原来第5行的位置;
- 第579页,正文第4段,而不是一个指向节点的指针或一个结构;最后一行,防止多次包含一个头文件。
- 第596页,程序清单17.7上面这一行,包括EnQueue()函数中用到的CopyToNode()函数。
- 第611页,第12行,如果在树中找到指定项,该返回返回true。
- 第614页,第2行,AddItem()、InTree()和DeleteItem()。
- 第631页,第4题,重写mall.c(程序清单17.9)
- 第633页,“A.2 第2章复习题答案”中,第4题,第6行,把:=改成=,赋值用=,
- 第636页,第10题,第4行:count?\n;(即将ry删除);”A.4 第4章复习题答案”,第1题的第2句话,下一条scanf()语句在输入缓冲区查找重量时
- 第646页,最后一行,sacnf(“%s”, &score);
- 第650页,第8题的d项,[10] = 101, 101, 101, [3] = 101];
- 第669页,“1.逻辑表达式”中的第2行,两个表达式中至少有一个为真时,expression 1 || expression 2的值就为真
- 第679页,表B.5.1中,如果exprs为1(或真),宏什么也不做。