热门搜索: 中考 高考 考试 开卷17
服务电话 024-96192/23945006
 

套装2册 C程序设计语言

编号:
wx1202084105
销售价:
¥95.04
(市场价: ¥108.00)
赠送积分:
95
数量:
   
商品介绍

《C程序设计语言(原书第2版.新版)习题解答(典藏版)》
本书是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言(第2版·新版)》所有练习题的解答,是不错的编程实战辅导书。K&R的著作是C语言方面的经典教材,而这本与之配套的习题解答将帮助您更加深入地理解C语言并掌握良好的C语言编程技能。
《C程序设计语言(原书第2版.新版)(典藏版)》
在计算机发展的历目前,没有哪一种程序设计语言像C语言这样应用如此广泛。 本书原著即为C语言的设计者之一Dennis M.Ritchie 和有名的计算机科学家 Brian W.Kernighan合著的一本介绍C语言的很好不错经典著作。 我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。原著版中介绍的C语言成为后来广泛使用的C语言版本--标准C的基础。人们熟知的"hello,world"程序就是由本书抢先发售引入的,现在,这一程序已经成为所有程序设计语言入门的课。原著第2版根据1987年制定的ANSI C标准做了适当的修订,引入了很新的语言形式,并增加了新的示例。通过简洁的描述、典型的示例,作者全面、系统、准确地讲述了C语言的各个特性以及程序设计的基本方法。 对于计算机从业人员来说,本书是一本推荐阅读的程序设计语言方面的参考书。

《C程序设计语言(原书第2版.新版)习题解答(典藏版)》
《C程序设计语言(原书第2版.新版)(典藏版)》
【注】本套装以商品标题及实物为准,因仓位不同可能会拆单发货,如有需要购买前可联系客服确认后再下单,谢谢!

《C程序设计语言(原书第2版.新版)习题解答(典藏版)》
    导 言练习1-1 (《C程序设计语言(第2版·新版)》即教材第3页)在你自己的系统中运行“hello,world”程序。再有意去掉程序中的部分内容,看看会得到什么出错信息。上面这个例子省略了换行符(\n),这将使光标停留在输出信息的末尾。第二个例子省略了printf()后面的分号。C程序的语句必须以分号结尾(参见K&R原著0页)。因此,对于本例,编译器将识别出少了一个分号并给出相应的出错信息。在第三个例子里,\n后面的双引号"被错写为单引号'。于是,这个单引号及其后面的右括号和分号将被看作整个输出字符串的一部分。编译器将把这种情况视为一个错误,会报告说缺失了一个双引号;在右花括号前缺失了一个右圆括号;字符串过长;字符串中带有换行符。练习1-2 (教材第3页)做个实验,当printf函数的参数字符串中包含\c(其中c是上面的转义字符序列中未曾列出的某个字符)时,观察一下会出现什么情况。参考手册(参见K&R原著附录A,93页)中提到:“如果\后面紧跟的字符不在以上指定的字符中,则其行为是未定义的。”上面这段代码的执行结果与具体的编译器相关。一种可能出现的结果是:其中,是ASCII值等于7的字符所产生的一声短蜂鸣。在\的后面,可以用很多3个八进制数字(参见K&R原著第37页)来代表一个字符,而\7在ASCII字符集中代表的是一声短蜂鸣。练习1-3 (教材第8页)修改温度转换程序,使之能在转换表的顶部打印一个标题。在循环语句之前增加的printf("Fahr Celsius\n");语句将在温度转换表的顶部产生一个表头。为了让输出内容与这个表头对齐,我们还在%3.0f和%6.1f之间增加了两个空格。上面这个程序中的其余语句与K&R原著2页中给出的代码接一致。练习1-4 (教材第8页)编写一个程序打印摄氏温度转换为相应华氏温度的转换表。本程序将输出一个摄氏温度(0~300)到华氏温度的转换表。华氏温度是用以下语句计算得到的:本题的解题思路与打印华氏温度到摄氏温度的对照表程序(见K&R原著2页)是相同的。整型变量lower、upper、step分别对应变量celsius的下限、上限、步长。程序先把变量celsius初始化为它的下限,再在while循环中把对应的华氏温度计算出来。然后,程序打印出这组摄氏温度和华氏温度的值,并按步长递增变量celsius的值。while循环将一直执行,直到变量celsius超出其上限为止。练习1-5 (教材第9页)修改温度转换程序,要求以逆序(即按照从300度到0度的顺序)打印温度转换表。专享的修改之处是:这条for语句的部分负责把华氏温度变量(fahr)初始化为它的上限;for语句的第二部分(即for循环的控制条件)负责检查变量fahr是否大于或等于它的下限—只要这个检查的结果为真,for语句就将继续循环执行;for语句的第三部分(即步长表达式)负责对变量fahr按步长进行递减操作。练习1-6 (教材1页)验证表达式getchar()!= EOF的值是0还是1。根据K&R原著7页的论述,表达式相当于本程序从系统的标准输入读取字符并使用了上面的表达式。当有字符可读时,getchar()不会返回文件结束符(即EOF),所以的值为真,变量c将被赋值1。当程序遇到文件结束符时,表达式的值为假,此时,变量c将被赋值0,程序将结束运行。练习1-7 (教材1页)编写一个打印EOF值的程序。符号常量EOF是在头文件中定义的。在上面这个程序中,printf()语句中双引号外的EOF将被替换为头文件中紧跟在之后的文本。在我们的系统中,EOF被定义为-1,但在其他系统中,EOF可能被定义为其他的值。这正是使用EOF等标准符号常量能够增加程序可移植性的原因所在。练习1-8 (教材3页)编写一个统计空格、制表符与换行符个数的程序。整型变量nb、nt和nl分别用来统计空格、制表符和换行符的个数。这三个变量的初值都是0。在while循环的循环体内,出现在输入中的每一个空格、制表符和换行符都将被记录。while循环中的三条if语句在每次循环中都将被执行。如果程序读到的字符不是空格、制表符或换行符,就不执行任何操作。如果程序读到的字符是这三个符号之一,就对相应的计数器加1。当while循环终止(即getchar返回EOF)时,本程序将把空格、制表符和换行符的统计结果打印出来。K&R原著对if-else语句的介绍很早出现于第21页,下面是使用了这一语法结构的实现方法:练习1-9 (教材3页)编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。整型变量c负责记录当前输入字符的ASCII值,而整型变量lastc则记录着前一个输入字符的ASCII值。符号常量NONBLANK负责把变量lastc初始化为一个任意的非空格字符。while循环体中的条if语句输出非空格字符,第二条if语句处理空格字符,而第三条if语句用于检查当前的空格字符究竟是一个单个的空格符还是一串空格中的个空格。很后,对变量lastc进行刷新。以上操作将一直重复到while循环终止(即getchar返回EOF)为止。对if-else语句的介绍很早出现于教材4页,下面是使用了这一语法结构的实现方法:对逻辑或(OR)操作符 的介绍也很早出现于教材4页,下面是使用了这一知识的实现方法:练习1-10 (教材3页)编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,将回退符替换为\b,将反斜杠替换为\\。这样可以将制表符和回退符以可见的方式显示出来。输入的字符可以是一个制表符、一个回退符、一个反斜杠或者其他任何字符。如果输入是一个制表符,我们就把它替换为\t;如果输入是一个回退符,我们就把它替换为\b;如果输入是一个反斜杠,我们就把它替换为\\;其他字符则按原样输出。在C语言中,反斜杠是用'\\'来表示的。因此,如果我们想输出两个反斜杠,就必须把字符串"\\\\"传递给printf函数。对if-else语句的介绍很早出现于教材4页,下面是使用了这一语法结构的实现方法:练习1-11 (教材5页)你准备如何测试单词计数程序?如果程序中存在某种错误,那么什么样的输入很可能发现这类错误呢?单词计数程序的测试工作首先要从没有任何输入的情况开始。此时,该程序的输出结果应该是“0 0 0”,即零行、零单词、零字符。接下来测试输入单字符单词的情况。此时,该程序的输出结果应该是“1 1 2”,即一行、一个单词、两个字符(一个字母加上一个换行符)。再测试一个由两个字符组成的单词。此时,该程序的输出结果应该是“1 1 3”,即一行、一个单词、三个字符(二个字母加上一个换行符)。然后,再测试两个单字符单词的情况。首先,两个单词出现在同一行,此时的输出结果应该是“1 2 4”;然后,两个单词各占一行,此时的输出结果应该是“2 2 4”。那些满足边界条件的输入情况很有助于发现单词计数程序中的错误。这些边界条件包括:—没有输入—没有单词(只有换行符)—没有单词(只有空格、制表符和换行符)—每个单词各占一行的情况(没有空格和制表符)—单词出现于文本行行首的情况—单词出现于一串空格之后的情况练习1-12 (教材5页)编写一个程序,以每行一个单词的形式打印其输入。整型变量state是一个布尔量,用于记录程序的处理过程是否正处于某个单词的内部。在程序刚开始运行的时候,变量state将被初始化为OUT,表明尚未处理任何数据。条if语句判断变量c是否是一个单词分隔符。如果是,则第二条if语句将判断这个单词分隔符是否表示某个单词结束。如果是,就输出一个换行符并修改变量state的值;如果不是,则不进行任何操作。如果c不是一个单词分隔符,那么,它将或者是某单词的个字符,或者是一个单词中除个字符之外的其他字符。对于种情况(c是某单词的个字符),程序将修改变量state的值并输出这个字符;对于第二种情况(c是某个单词中的其他字符),程序直接输出这个字符。练习1-13 (教材7页)编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。空格、换行符或制表符标志着单词的结束。如果有一个单词(nc>0)且它的长度小于允许的单词很大长度(nc=MAXWORD),这个程序将对变量ovflow加1以记录长度大于或等于MAXWORD的单词的个数。在读入全部单词之后,我们的程序将找出数组wl中的很大值(maxvalue)。变量len是根据MAXHIST和maxvalue的值计算得出的wl[i]所对应的直方图长度。如果wl[i]大于零,就至少要打印出一个星号。这个实现方法将输出一个垂直方向的直方图。这个程序从开始直到求值maxvalue的过程与前一个程序接相同。然后,这个程序需要计算数组wl中的每一个元素并判断是否需要在数组元素的对应位置上打印一个星号。这一判断过程必不可少,因为垂直方向直方图的所有直方条是同步打印的。很后的两个for循环用来输出数组wl各元素的下标和取值。练习1-14 (教材7页)编写一个程序,打印输入中各个字符出现频度的直方图。这个程序与练习1-13中的水平直方图输出程序很相似,但我们现在统计的是各个字符的出现频度。程序中使用了一个元素个数等于MAXCHAR的字符计数器数组,如果我们使用的字符集中存在值大于或等于MAXCHAR的字符,则这些字符将被忽略。另一个区别是我们使用了一个宏来判断某个字符是否是一个可显示字符。关于包含的头文件的讨论出现于K&R原著第43页,对isprint的介绍则出现于K&R原著第249页(附录B:标准库)。练习1-15 (教材9页)重新编写1.2节中的温度转换程序,使用函数实现温度转换计算。我们采用一个函数把华氏温度转换为摄氏温度。这个函数名为celsius,它的输入参数是一个浮点数,返回值也是一个浮点数。这个函数将通过return语句返回表达式的值。有时,表达式是一个简单变量,例如power函数(参见K&R原著第26页);但有时我们也会使用一个比较复杂的表达式,例如这里的celsius函数,因为这样做可以使所有工作都在return语句中完成。因为函数celsius的输入参数是一个浮点数,它的返回值也是一个浮点数,所以我们把它声明为如下的形式:练习1-16 (教材第22页)修改打印很长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多地打印文本。我们只对原来的主函数进行了一处修改,如下所示:这条语句将把输入行的长度(len)和保存在数组line里的字符尽可能多地打印出来。我们对函数getline也做了几处修改。首先,循环语句不再检查字符数是否超出数组s的—因为这一不再是for循环的终止条件之一了,现在的getline能返回任意长的输入行的长度并能存储尽可能多的输入行内容。其次,原来for循环中用于判断字符串数组是否还有空位置的表达式被修改为语句之所以要进行这样的修改,是因为数组s的很后一个下标是而这又是因为数组s中有lim个元素且我们已经读取了输入字符。所以将在数组s里给换行符留出一个位置,即还要给字符串结束符留出一个位置,即字符串的长度将通过变量i返回;而变量j则记录着被复制到字符串s中的字符的个数。

《C程序设计语言(原书第2版.新版)习题解答(典藏版)》
这本习题解答对Brian W. Kernighan和Dennis M. Ritchie所著的《The C Programming Language》(第2版,Prentice Hall, 1988)(以下简称为“K&R原著”)中所有的练习题都进行了解答。在美国国家标准协会(American National Standards Institute,ANSI)推出C语言的ANSI标准之后,Kernighan和Ritchie两位作者对《The C Programming Language》的版进行了修订,所以我们也根据ANSI标准和K&R的《The C Programming Language》(第2版)对有关习题解答进行了修订。K&R所著的《The C Programming Language》(第2版)是C语言方面的经典教材,而这本与之配套的习题解答将帮助读者更加深入地理解C语言并掌握良好的C语言编程技巧。读者可以通过K&R原著学习C语言,独立地解答书中的练习题,再钻研本书给出的习题答案。有关习题都是用K&R原著中当时已经介绍过的语言结构来解答的,这样做的目的是使这本习题解答能够与K&R原著中的教学内容保持同步。在学习了更多的C语言知识之后,相信大家能够给出更好的解决方案。例如,下面这条语句是在K&R原著第21页介绍的:if (表达式)语句1else语句2所以我们对出现在此之前的习题将不使用这条语句进行解答,但出现在K&R原著第20页上的练习1-8、1-9和1-10如果使用了这条语句,其解答将得到很大的改进。有时我们在解答中也列出使用了当时尚未介绍的C语言知识的解决方案。本书中的习题解答都进行了解释。我们将假设读者已经读过了K&R原著中有关习题出现之前的内容。我们不打算重复K&R原著已经介绍过的内容,但会把各习题解答的要点指出来。单凭阅读和学习语法结构并不能真正掌握一门程序设计语言,必须进行编程实践—亲自编写一些程序并研究一些别人写的程序。我们的目标是利用C语言良好的特性,使程序模块化,充分利用库函数并以格式化的风格编写程序,这些将有助于大家清楚地了解程序的逻辑流程。我们希望这本书能够帮助大家成为C语言的高手。我们要感谢以下朋友对本书的出版所给予的帮助:Brian Kernighan、Don Kostuch、Bruce Leung、Steve Mackey、Joan Magrabi、Julia Mistrello、Rosemary Morrissey、Andrew Nathanson、Sophie Papanikolaou、Dave Perlin、Carlos Tondo、John Wait和Eden Yount。Clovis L. Tondo
《C程序设计语言(原书第2版.新版)(典藏版)》
第2版前言The C Programming Language, Second Edition自从1978年本书版出版以来,计算机领域经历了一场革命。大型计算机的功能越来越强大,而个人计算机的性能也可以与十多年前的大型机相媲美。在此期间,C语言也在悄悄地演进,其发展早已超出了它仅仅作为UNIX操作系统的编程语言的初衷。C语言普及程度的逐渐增加以及该语言本身的发展,加之很多组织开发出了与其设计有所不同的编译器,所有这一切都要求对C语言有一个比本书版更精确、更适应其发展的定义。1983年,美国国家标准协会(ANSI)成立了一个委员会,其目标是制定“一个无歧义性的且与具体机器无关的C语言定义”,而同时又要保持C语言原有的“精神”。结果产生了C语言的ANSI标准。ANSI标准规范了一些在本书版中提及但没有具体描述的结构,特别是结构赋值和枚举。该标准还提供了一种新的函数声明形式,允许在使用过程中对函数的定义进行交叉检查。标准中还详细说明了一个具有标准输入/输出、内存管理和字符串操作等扩展函数集的标准库。它精确地说明了在C语言原始定义中并不明晰的某些特性的行为,同时还明确了C语言中与具体机器相关的一些特性。本书第2版介绍的是ANSI标准定义的C语言。尽管我们已经注意到了该语言中变化了的地方,但我们还是决定在这里只列出它们的新形式。最重要的原因是,新旧形式之间并没有太大的差别,最明显的变化是函数的声明和定义。目前的编译器已经能够支持该标准的大部分特性。我们将尽力保持本书版的简洁性。C语言并不是一种大型语言,也不需要用一本很厚的书来描述。我们在讲解一些关键特性(比如指针)时做了改进,它是C语言程序设计的核心。我们重新对以前的例子进行了精练,并在某些章节中增加了一些新例子。例如,我们通过实例程序对复杂的声明进行处理,以将复杂的声明转换为描述性的说明或反之。像前一版中的例子一样,本版中所有例子都以可被机器读取的文本形式直接通过了测试。附录A只是一个参考手册,而非标准,我们希望通过较少的篇幅概述标准中的要点。该附录的目的是帮助程序员更好地理解语言本身,而不是为编译器的实现者提供一个精确的定义—这正是语言标准所应当扮演的角色。附录B对标准库提供的功能进行了总结,它同样是面向程序员而非编译器实现者的。附录C对ANSI标准相对于以前版本所做的变更进行了小结。我们在版中曾说过:“随着使用经验的增加,使用者会越来越感到得心应手。”经过十几年的实践,我们仍然这么认为。我们希望这本书能够帮助读者学好并用好C语言。非常感谢帮助我们完成本书的朋友们。Jon Bentley、Doug Gwyn、Doug McIlroy、Peter Nelson和Rob Pike几乎对本书手稿的每一页都提出了建议。我们非常感谢Al Aho、Dennis Allison、Joe Campbell、G. R. Emlin、Karen Fortgang、Allen Holub、Andrew Hume、Dave Kristol、John Linderman、Dave Prosser、Gene Spafford和Chris Van Wyk等人,他们仔细阅读了本书。我们也收到了来自Bill Cheswick、Mark Kernighan、Andy Koenig、Robin Lake、Tom London、Jim Reeds、Clovis Tondo和Peter Weinberger等人的很好的建议。Dave Prosser为我们回答了很多关于ANSI标准的细节问题。我们大量地使用了Bjarne Stroustrup的C++翻译程序进行程序的局部测试。Dave Kristol为我们提供了一个ANSI C编译器以进行最终的测试。Rich Drechsler帮助我们进行了大量的排版工作。真诚地感谢每个人!Brian W. KernighanDennis M. Ritchie版前言The C Programming Language, Second EditionC语言是一种通用的程序设计语言,其特点包括简洁的表达式、流行的控制流和数据结构、丰富的运算符集等。C语言不是一种“很不错”的语言,也不“庞大”,并且不专用于某个特定的应用领域。但是,C语言的限制少,通用性强,这使得它比一些公认为功能强大的语言使用更方便、效率更高。C语言最初是由Dennis Ritchie为UNIX操作系统设计的,并在DEC PDP-11计算机上实现。UNIX操作系统、C编译器和几乎所有的UNIX应用程序(包括编写本书时用到的所有软件)都是用C语言编写的。同时,还有一些适用于其他机器的编译器产品,比如IBM System/370、Honeywell 6000和Interdata 8/32等。但是,C语言不受限于任何特定的机器或系统,使用它可以很容易地编写出不经修改就可以运行在所有支持C语言的机器上的程序。本书的目的是帮助读者学习如何用C语言编写程序。本书的开头有一个指南性的引言,目的是使新用户能尽快地开始学习;随后在不同的章节中介绍了C语言的各种主要特性;本书的附录中还包括一份参考手册。本书并不仅仅讲述语言的一些规则,而是采用阅读别人的代码、自己编写代码、修改某些代码等不同的方式来指导读者进行学习。书中的大部分例子都可以直接完整地运行,而不只是孤立的程序段。所有例子的文本都以可被机器读取的文本形式直接通过了测试。除了演示如何有效地使用语言外,我们还尽可能地在适当的时候向读者介绍一些高效的算法、良好的程序设计风格以及正确的设计原则。本书并不是一本有关程序设计的入门性

商品参数
基本信息
出版社 机械工业出版社
ISBN 9787111619017
条码 9787111619017
编者 [美]克劳·汤多Clovis L.Tondo,斯科特·吉米拜尔Scott E.Gimpel
译者
出版年月 2019-04-01 00:00:00.0
开本 16开
装帧 平装
页数 140
字数 null千字
版次 1
印次 1
纸张
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]