c语言程序设计现代方法 c语言必背100代码
本篇文章给大家谈谈c语言程序设计现代方法,以及c语言必背100代码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
C语言程序设计现代方法的介绍
《C语言程序设计:现代方法(第2版)》内容简介:时至今日,C语言仍然是计算机领域的通用语言之一,但今天的 C语言已经和最初的时候大不相同了。《C语言程序设计:现代方法(第2版)》最主要的一个目的就是通过一种“现代方法”来介绍 C语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。这一版中紧密结合了 C99标准,并与 C89标准进行对照,补充了 C99中的最新特性。《C语言程序设计:现代方法(第2版)》分为 C语言的基础特性、 C语言的高级特性、 C语言标准库和参考资料 4个部分。每章末尾都有一个“问与答”小节给出一系列与该章内容相关的问题及答案,此外还包含适量的习题。
C语言程序设计现代方法的图书信息
作者:(美)金King著,吕秀锋译
ISBN:10位[7115 167079]13位[978711 5167071]
出版社:人民邮电出版社
出版日期:2007-11-1
定价:55.00元 King,世界知名的计算机程序设计教育家,佐治亚州立大学数学与计算机科学系副教授。耶鲁大学计算机科学硕士,加利福尼亚大学伯克利分校计算机科学博士,曾任教于佐治亚理工学院。除本书外,他还撰写了广受欢迎的教材JavaProgramming:FromtheBeginning,并在Dobb'sJournal等权威杂志上发表了许多论文。业余时间,King教授还在多部电影中扮演过角色。
吕秀锋,亚洲理工大学(AIT)计算机软件硕士,现为北京理工大学软件学院教师。多年来一直从事“计算机基础(双语)”、“C语言程序设计(双语)”以及“程序设计开发与实践”等本科生课程的教学工作,深受学生欢迎。她还译有《数据结构与算法:C#语言描述》一书。黄倩,中国科学院计算技术研究所工学博士,中国计算机学会会员。研究方向包括视频处理、视频监控等,已在知名的国际期刊和国际会议论文集上发表10篇论文。译有《编程珠玑(第2版)》一书,受到读者欢迎。第1章 C语言概述11.1 C语言的历史11.1.1起源11.1.2标准化11.1.3基于C的语言21.2 C语言的优缺点31.2.1 C语言的优点31.2.2 C语言的缺点31.2.3高效地使用C语言4问与答5第2章 C语言基本概念72.1编写一个简单的C程序7程序显示双关语72.1.1编译和链接82.1.2集成开发环境82.2简单程序的一般形式92.2.1指令92.2.2函数92.2.3语句102.2.4显示字符串102.3注释112.4变量和赋值122.4.1类型122.4.2声明132.4.3赋值132.4.4显示变量的值14程序计算箱子的空间重量142.4.5初始化152.4.6显示表达式的值162.5读入输入16程序计算箱子的空间重量(改进版)162.6定义常量的名字17程序华氏温度转换为摄氏温度172.7标识符182.8 C程序的书写规范19问与答21练习题23编程题24第3章格式化输入/输出263.1 printf函数263.1.1转换说明27程序用printf函数格式化数283.1.2转义序列283.2 scanf函数293.2.1 scanf函数的工作方法303.2.2格式串中的普通字符313.2.3易混淆的printf函数和scanf函数32程序分数相加32问与答33练习题34编程题35第4章表达式364.1算术运算符36程序计算通用产品代码的校验位384.2赋值运算符394.2.1简单赋值404.2.2左值414.2.3复合赋值414.3自增运算符和自减运算符424.4表达式求值434.5表达式语句45问与答45练习题47编程题49第5章选择语句505.1逻辑表达式505.1.1关系运算符505.1.2判等运算符515.1.3逻辑运算符515.2 if语句525.2.1复合语句535.2.2 else子句535.2.3级联式if语句54程序计算股票经纪人的佣金555.2.4“悬空else”的问题565.2.5条件表达式575.2.6 C89中的布尔值585.2.7 C99中的布尔值585.3 switch语句59程序显示法定格式的日期61问与答62练习题65编程题67第6章循环696.1 while语句69程序显示平方表71程序数列求和716.2 do语句72程序计算整数的位数736.3 for语句736.3.1 for语句的惯用法746.3.2在for语句中省略表达式756.3.3 C99中的for语句756.3.4逗号运算符76程序显示平方表(改进版)776.4退出循环786.4.1 break语句786.4.2 continue语句786.4.3 goto语句79程序账簿结算806.5空语句81问与答83练习题84编程题85第7章基本类型887.1整数类型887.1.1 C99中的整数类型907.1.2整数常量907.1.3 C99中的整数常量917.1.4整数溢出917.1.5读/写整数91程序数列求和(改进版)927.2浮点类型937.2.1浮点常量947.2.2读/写浮点数947.3字符类型947.3.1字符操作957.3.2有符号字符和无符号字符957.3.3算术类型967.3.4转义序列967.3.5字符处理函数977.3.6用scanf和printf读/写字符987.3.7用getchar和putchar读/写字符98程序确定消息的长度997.4类型转换1007.4.1常用算术转换1017.4.2赋值过程中的转换1027.4.3 C99中的隐式转换1037.4.4强制类型转换1037.5类型定义1057.5.1类型定义的优点1057.5.2类型定义和可移植性1057.6 sizeof运算符106问与答107练习题109编程题110第8章数组1138.1一维数组1138.1.1数组下标113程序数列反向1158.1.2数组初始化1158.1.3指定初始化式116程序检查数中重复出现的数字1168.1.4对数组使用sizeof运算符117程序计算利息1188.2多维数组1198.2.1多维数组初始化1208.2.2常量数组121程序发牌1218.3 C99中的变长数组122问与答123练习题124编程题125第9章函数1299.1函数的定义和调用129程序计算平均值129程序显示倒计数130程序显示双关语(改进版)1319.1.1函数定义1329.1.2函数调用133程序判定素数1349.2函数声明1359.3实际参数1369.3.1实际参数的转换1379.3.2数组型实际参数1389.3.3变长数组形式参数1409.3.4在数组参数声明中使用static1419.3.5复合字面量1419.4 return语句1429.5程序终止1439.6递归144程序快速排序146问与答147练习题150编程题153第10章程序结构15510.1局部变量15510.1.1静态局部变量15610.1.2形式参数15610.2外部变量15610.2.1示例:用外部变量实现栈15610.2.2外部变量的利与弊157程序猜数15810.3程序块16110.4作用域16210.5构建C程序163程序给一手牌分类163问与答169练习题169编程题170第11章指针17211.1指针变量17211.2取地址运算符和间接寻址运算符17311.2.1取地址运算符17311.2.2间接寻址运算符17411.3指针赋值17411.4指针作为参数176程序找出数组中的最大元素和最小元素17711.5指针作为返回值179问与答180练习题181编程题182第12章指针和数组18412.1指针的算术运算18412.1.1指针加上整数18512.1.2指针减去整数18512.1.3两个指针相减18612.1.4指针比较18612.1.5指向复合常量的指针18612.2指针用于数组处理18612.3用数组名作为指针188程序数列反向(改进版)18912.3.1数组型实际参数(改进版)18912.3.2用指针作为数组名19112.4指针和多维数组19112.4.1处理多维数组的元素19112.4.2处理多维数组的行19212.4.3处理多维数组的列19212.4.4用多维数组名作为指针19212.5 C99中的指针和变长数组193问与答194练习题195编程题197第13章字符串19813.1字符串字面量19813.1.1字符串字面量中的转义序列19813.1.2延续字符串字面量19913.1.3如何存储字符串字面量19913.1.4字符串字面量的操作20013.1.5字符串字面量与字符常量20013.2字符串变量20013.2.1初始化字符串变量20113.2.2字符数组与字符指针20213.3字符串的读和写20313.3.1用printf函数和puts函数写字符串20313.3.2用scanf函数和gets函数读字符串20313.3.3逐个字符读字符串20413.4访问字符串中的字符20513.5使用C语言的字符串库20613.5.1 strcpy函数20713.5.2 strlen函数20813.5.3 strcat函数20813.5.4 strcmp函数209程序显示一个月的提醒列表20913.6字符串惯用法21113.6.1搜索字符串的结尾21113.6.2复制字符串21313.7字符串数组214程序核对行星的名字217问与答218练习题220编程题222第14章预处理器22514.1预处理器的工作原理22514.2预处理指令22714.3宏定义22714.3.1简单的宏22714.3.2带参数的宏22914.3.3#运算符23114.3.4##运算符23114.3.5宏的通用属性23214.3.6宏定义中的圆括号23314.3.7创建较长的宏23314.3.8预定义宏23414.3.9 C99中新增的预定义宏23514.3.10空的宏参数23614.3.11参数个数可变的宏23614.3.12 __func__标识符23714.4条件编译23714.4.1#if指令和#endif指令23814.4.2 defined运算符23814.4.3#ifdef指令和#ifndef指令23914.4.4#elif指令和#else指令23914.4.5使用条件编译24014.5其他指令24014.5.1#error指令24014.5.2#line指令24114.5.3#pragma指令24214.5.4 _Pragma运算符242问与答243练习题245第15章编写大型程序24815.1源文件24815.2头文件24915.2.1#include指令24915.2.2共享宏定义和类型定义25015.2.3共享函数原型25115.2.4共享变量声明25215.2.5嵌套包含25315.2.6保护头文件25315.2.7头文件中的#error指令25415.3把程序划分成多个文件254程序文本格式化25515.4构建多文件程序26015.4.1 makefile26015.4.2链接期间的错误26215.4.3重新构建程序26215.4.4在程序外定义宏264问与答264练习题265编程题266第16章结构、联合和枚举26716.1结构变量26716.1.1结构变量的声明26716.1.2结构变量的初始化26916.1.3指定初始化26916.1.4对结构的操作27016.2结构类型27016.2.1结构标记的声明27116.2.2结构类型的定义27216.2.3结构作为参数和返回值27216.2.4复合字面量27316.3嵌套的数组和结构27416.3.1嵌套的结构27416.3.2结构数组27416.3.3结构数组的初始化275程序维护零件数据库27516.4联合28116.4.1用联合来节省空间28216.4.2用联合来构造混合的数据结构28416.4.3为联合添加“标记字段”28416.5枚举28516.5.1枚举标记和类型名28616.5.2枚举作为整数28616.5.3用枚举声明“标记字段”286问与答287练习题289编程题293第17章指针的高级应用29417.1动态存储分配29417.1.1内存分配函数29417.1.2空指针29517.2动态分配字符串296……第18章声明 327第19章程序设计 345第20章底层程序设计 363第21章标准库 377第22章输入/输出 384第23章库对数值和字符数据的支持 419第24章错误处理 446第25章国际化特性 456第26章其他库函数 482第27章 C99对数学计算的新增支持 503附录A C语言运算符 524附录B C99与C89的比较 525附录C C89与经典C的比较 529附录D标准库函数 532附录E ASCII字符集 569参考文献 570索引 573
跪求:C语言程序设计:现代方法(解析答案)
、应用最广泛的windows、linux和UNIX三个操作系统都是用C语言编写的。0S是计算机系统(由软硬件两个子系统构成)的核心和灵魂,它是软件中最庞大最复杂的系统软件。既然如此庞大复杂的0S都可以用c语言编写,从狭义而言,还有什么系统软件和应用软件不能用c语言编写呢?由此可以肯定的说,c语言是一门十分优秀而又重要的语言。
c语言程序设计是过程性程序设计语言,它的发展贯穿了计算机发展的历程,它蕴含了程序设计的基本思想,囊括了程序设计的基本概念,所以它是理工科高等院校的一门基础课程。
从市面上有关c语言的书籍和高等院校采用的教材来看,它们有一个共性,那就是:脱离了实际应用(全是小打小闹的小例子),纯粹的过程性程序设计,没有软件工程思想的体现,没有一定程序设计风格,仅仅是为了让大家明白什么是c语言而已。
高等院校开设c语言程序设计的目的是让学生对程序设计有个入门,有个直观的理解,同时为其他后续课程作铺垫。但是如果教学仅仅以此为目的,那么教学本身就效果而言是个大大的失败。
大家知道,在商业上讲究唯利是图,“利”是商业追求的目标,离开了“利”经商,则商无动力,其结果是必败无疑。在c语言程序设计教学当中,教师应该把“唯用是图”作为教学的首要目标。如果抛开了实际应用进行程序设计教学,就是纸上谈兵,就是“说明书”式的教学。印度的程序设计课程采用“事件驱动式”教学,我认为在中国的c语言程序设计教学中应该采用“项目驱动式”教学。“项目驱动式”教学就是以项目为目的,以c语言理论教学为过程,最终能用c语言设计项目,实现项目的要求。“项目驱动式”教学的关键在于培养学生“如何做什么”和“可以干什么”。一个项目就是一个工程,在“项目驱动式”教学中,首先应该让学生简单了解什么是软件工程思想,其次在c语言理论教学过程中,让学生懂得面向对象的程序设计的风格,最后引导他们来设计项目。
(二)“项目驱动”式教学应注意的问题
1.c语言程序设计教学要帮助学生树立面向工程的观点
在计算机行业中,软件是通过人们的智力活动、把知识与技术转化成信息的一种产品。软件的设计已经用工程的观念来进行管理。软件设计工作被当作一项系统工程来对待。软件的的生存周期一般可分为以下阶段:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。我们不难看出软件工程的复杂程度是很大的。理工科高等院校把c语言作为一门基础课程,也是为了给社会培养信息技术人才。众所周知,养成一个好的习惯是非常重要的,所以c语言程序设计作为大多数工科院校学生接触的第一门程序设计语言(有的院校讲pascal),就应该让学生树立正确的观点。那么当前的程序设计教学也必须以切合将来软件工程开发的实际需要为第一目标,使学生在学习程序设计的初级阶段就树立正确的软件工程观点。这样做不仅可以为学生将来从事计算机应用设计打下良好的基础,而且有利于培养学生分析问题的完备性,以及统筹全局,协调关系的基本素质。
2.理论教学应从单一的“结构化程序设计”向“结构化与面向对象并举”转变
“结构化程序设计”方法是程序设计的基础,必须让学生掌握得坚实可靠。结构化程序设计的过程是培养学生思维能力的过程,在教学中经常发现有些学生的思维混乱。这些都是缺乏思维训练的结果。结构化程序设计的训练不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性。所以在授课过程中要注意讲解结构化程序设计的思想时应突出两点:(1)程序的质量首先取决于它的结构。(2)程序设计的基本方法是自顶向下地逐步求精和模块化。
在c程序教学过程中,越到后面的章节,学生越会产生设计程序逐渐变难的感觉,这是不符合逻辑的一种怪现象。按照常理,C语言学的越多,说明你的程序设计知识越多,设计起程序来应该更加得心应手,那么出现这种现象的原因何在呢?当然该问题的出现的原因是多方面的,但是其中最重要的一点就是长期以来程序设计的观念不是以如何处理好对象为出发点,而是以如何使用好语言为基本点。受这种思想的影响,我们的程序设计教学大多数不是以如何解决好问题为重点,而是以讲解语法规则和语句格式为重点,是“说明书”式的教学。这样做造成的结果就是见到一个程序后学生首先想到是该用哪条语句,而不是思考怎样合理的解析。要切实解决这个问题,首先应该改变程序设计的观念。“面向对象程序设计”思想是目前最为流行、极为实用的一种程序设计方法,但是让学生直接接触“面向对象程序设计”,肯定不能对程序设计打下牢固的基础。“结构化与面向对象并举”是现代计算机程序设计的发展趋势,应该认真探索研究,让学生有一个较为轻松的学习过程。程序设计的实质就是编写处理对象的过程,所以将c与c++有机的融为一体的教材应该是首选教材,在教学过程中,我们应该从社会发展的角度进行探索研究,将目前最为流行又极为实用“面向对象程序设计”思想融合到c语言教学中。
3.c语言教学应培养学生良好的程序设计风格
具有良好的设计风格应该是程序员所具备的基本素质,在实际的项目中程序员往往都有自己的一些编程风格。目前95%以上的程序设计书籍不注重程序设计风格问题,这导致了很多学生没有良好的程序设计风格,在他们刚刚毕业踏入社会时,如果周围的同事没有良好的编程风格,那么很难通过环境来使自己提高这方面的素质,即使有提高也不容易比较全面的提高。因此在学生接触的第一门程序设计语言教学中,就应该培养学生良好的程序设计风格,使他们一进工作环境就具备这个素质。
Pascal设计者N.Writh教授十分重视程序设计风格的养成,他坚信“教给学生们以表达他们思维的语言会深深地影响他们思维和创造发明的习惯,而正是这些语言本身的混乱直接影响着学生们的程序设计的风格”,他这里所指的“这些运用”是当时那些主要用于程序设计教学的计算机语言。对学生来讲,一开始就强调程序设计风格很有必要,良好的程序设计风格不仅有助于提高程序的可靠性、可理解性、可测试性、可维护性和可重用性,而且也能够促进技术的交流,改善软件的质量。所以培养良好的程序设计风格对于初学者来说非常重要。
程序设计风格,实际上是指的是编码风格。在教学过程中应从源程序文档化,数据说明的原则,输入/输出方法这三个方面培养学生的编码风格,进而从编码原则探讨提高程序的可读性、改善程序质量的方法。
(1)源程序文档化。编码的目的是产生程序,但是为了提高程序的可维护性。源代码是需要实现文档化的。源程序文档化包括选择标识符(变量和标号)的名字、安排注释以及标准的书写格式等。
①选择标识符的命名规则。标识符包括模块名、变量名、常量名、标号名、子程序名等。这些名字应能反映它所代表的实际东西,应有一定实际意义,使其能顾名思义。另外在模块名、变量名、常量名、标号名、子程序名中使用下划线是一种风格。使用这一技术的一种广为人知的命名规则就是匈牙利命名法(变量类型由一个或两个字符表示,并且这些字符将作为变量名的前缀)。当然使用匈牙利命名法与否都没有错误,重要的是要保持一致性——在整个程序中使用相同的命名规则。这就是说,如果你在一个小组环境中编程,你和其他小组成员应该制定一种命名规则。并自始至终使用这种规则。如果有人使用了别的命名规则,那么集成的程序读起来将是很费劲的。此外,你还要与程序中用到的第三方库(如果有的话)所使用的风格保持一致。如果可能的话,你应该尽量使用与第三方库相同的命名规则,这将加强你的程序的可读性和一致性。
②注释。程序中的注释是程序设计者与程序阅读者之间通信的重要手段。注释能够帮助读者理解程序,并为后续测试维护提供明确的指导信息。因此,注释是十分重要的,大多数程序设计语言提供了使用自然语言来写注释的环境,为程序阅读者带来很大的方便。注释分为功能性注释和序言性注释。
a.功能性注释。功能性注释在源程序中,用以描述其后的语句或程序段是在做什么工作,也就是解释下面要“做什么”,而不是解释下面怎么做。对于书写功能性注释,要注意以下几点:第一描述一段程序,而不是每一个语句。第二利用缩进和空行,使程序与注释容易区别。第三注释要准确无误。
b.序言性注释。序言性注释通常位于每个程序模块的开头部分,它给出程序的整体说明,对于理解程序具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。有关内容包括:程序标题;有关该模块功能和目的的说明;主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述;模块位置(在哪一个源文件中,或隶属于哪一个软件包);开发简历:模块设计者、复审考、复审日期。
③用标准的书写格式。源程序清单的书写建议采用以下几点:
a.每行只写一条语句;
b.用分层缩进的写法显示嵌套结构层次,这样可使程序的逻辑结构更加清晰,层次更加分明。
c.书写表达式时适当使用空格或圆括号作隔离符。
d.在注释段周围加上边框;
e.注释段与程序段、以及不同的程序段之间插入字行;
(2)数据说明采用的原则。在编写程序时,要注意数据说明的风格。
数据说明的次序如果规范,将有利于测试,排错和维护。首先说明的先后次序要固定,例如,按常量说明、简单变量类型说明、数组说明用数据块说明、所有的文件说明的顺序说明。当然在类型说明中还可进一步要求,例如按如下顺序排列:整型量说明、实型量说明、字符量说明、逻辑说明。
其次当用一个语句说明多个变量名时,应当对这些变量按字母的顺序排列。
最后对于复杂数据结构,应利用注释说明实现这个数据结构的特点。
(3)输入/输出方法。输入/输出的方式和格式应当尽量避免因设计不当给用户带来的麻烦。这就要求,源程序的输入/输出风格必须满足能否为用户接受这一原则。所以在设计程序时,应考虑以下原则:输入数据时,要使输入的步骤和操作尽可能简单,应允许使用自由格式输入;应允许缺省值;对输入的数据要进行检验,以保证每个数据的有效性。
(三)结束语
在教学过程中,我们让学生设计一个程序模拟体育彩票的销售与对奖的过程,取得了良好的效果。他不仅启发和诱导了学生独立思考、积极思维的主动性,而且充分调动了学生学习的自觉性和积极性,使学生融会贯通地掌握了所学知识,提高了分析问题和解决实际问题的能力。
搞好c程序设计的教学工作涉及的因素很多,如果以项目来驱动教学,首先让学生树立面向工程的思想,其次把教学从单一的“结构化程序设计”向“结构化与面向对象并举”转变,最后特别要培养学生养成良好的编码风格,从而使他们学会能够“干什么”,那么我们认为教学目的就达到了。
另外,虚机团上产品团购,超级便宜
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!