
本书是以C程序设计零起点读者作为主要对象的程序设计教程,2003年7月出版了第1版,本次再版则进一步强化了编程能力。本书已被纳入普通高等教育“十一五”国家级规划教材。
本书用例题组织所有的教学内容,并用一个实例贯穿整个教学过程,整体内容编排独特,组织形式新颖。全书共分10章,分别是C语言基础知识、顺序结构程序设计、分支结构程序设计、循环结构程序设计、数组、指针、函数、结构体和其他构造类型以及文件。
本书配备了辅助教材《C程序设计辅导与实训》和《C程序设计试题精选》以及内容生动的电子教案。本书在第1版的基础上进行了修订,除了完善原有内容,还针对每个例题增加了知识要点的介绍,在各章之后补充了本章上机训练题及其指导等,此外还补充介绍了Visual C++ 6.0环境。
本书是高等院校C程序设计课程的教材,也可作为C语言自学者的参考书。
本书是以C程序设计零起点读者作为主要对象编写的程序设计教程。本书内容编排独特,组织形式新颖,能使读者在较短的时间内掌握C程序设计的精华。本书是高等院校C程序设计课程的教材,也可作为自学者的参考书。
本书第1版特点:
(1) 每章内容分成基础部分和提高部分。考虑到C的语法现象众多、初学者往往难以接受,书中将每章的内容分成了基础和提高两个部分。将常识性的、基础类的、必须掌握的内容放在基础部分中;将具有扩展性的、提高性的、专业性的内容安排在提高部分中。通过基础部分的学习,能够掌握最基本的语法,初步建立程序设计的思维方式和编写一般程序的能力,同时可培养学生的学习兴趣。即使因学时不足跳过提高部分,也不至于影响后续内容的学习。
(2) 所有教学内容用例题组织。在基本遵循C语言教学体系的情况下,将所有教学内容用例题组织。即根据要介绍的内容精心编写相应的例题,将大量的、正确的、规范的程序介绍给学生,在讲解例题的过程中,使学生学习语法、了解概念、掌握算法,做到在解决实际问题中讲授语法,而不是为了教语法而举例。
(3) 涉及算法的例题增设编程点拨,部分算法提供多种解法。针对学生“读程序容易,编程序难”的情况,书中凡涉及算法的例题,在给出其完整的程序之前,都增设了编程点拨,有些算法还提供了多种解法。
(4) 分阶段介绍程序调试方法。为了培养学生调试程序、排除错误的能力,教材中分阶段通过具体例题介绍了调试程序的方法,使用的环境是Turbo C 2.0。
(5) 讲授指针和函数时不涉及新算法。指针和函数是C语言中的重点和难点,为了使学生能够顺利接受新概念,将有关算法内容尽量安排在这两章之前,避免学生在接受指针和函数概念的同时,又要理解新算法。这样做不仅容易突破难点,而且有利于巩固已学过的知识。
(6) 用实例贯穿整个教学过程。为了使学生尽早接触应用程序的编写过程,在提高部分中,提供了贯穿整个教学过程的一个实例,并随着讲授内容的增多,逐步补充和完善其程序的功能。
(7) 习题形式新颖,提供单号习题答案。与教材内容相对应,各章习题也分为基础和提高两部分。为了逐步提高学生的编程能力,还精心编写了形式新颖的习题。书中单号习题提供参考答案,以方便学生自测和教师布置作业。
(8) 配备含有电子教案等内容的课件。该课件包括电子教案、全书所有例题和实例的源程序。为了减轻教师备课的负担,将基础部分中的所有内容和提高部分中的部分内容,制作成生动的电子教案,通过演示可使读者尽早了解本课程的基本目标。
(9) 配套出版了辅助教材。《C程序设计辅导与实训》内容既兼顾了随教学进度安排的阶段实训,也考虑到全部教学内容完成后的集中实训。实训部分以本教材中的实例作为样例;辅导部分给出了大量例题的解析、训练题和参考答案,因此是本教材的最佳教学辅助资料。而《C程序设计试题精选》提供了1000道练习题,包括选择题、填空题和上机题。选择题按等级考试“四选一”的标准形式;每道填空题则根据等级考试要求最多含有3个需要填写的空格;上机题有改错题、补充完整题和编程题3种类型。
C程序设计教程(第2版)
本书第2版主要修订内容:
(1) 在各章开头针对每道例题添加了知识要点。
(2) 在各章之后添加了上机训练内容,每个训练题均分为题目、目标、步骤、提示和扩展。
(3) 补充介绍Visual C++ 6.0环境。
(4) 精简内容,修改或更换部分例题,例题中所有变量均预先赋初值,规范了变量定义形式。
(5) 适当添加讨论题,促使互动教学。
(6) 将例题、习题、讨论题、上机训练题重新统筹安排。
(7) 在附录中添加一个含关键字、运算符、库函数的索引。
使用建议:
(1) 必学基础部分。基础部分是学生必须掌握的知识,但在教学过程中教师可将部分例题留给学生自学。
(2) 选学提高部分。书中的提高部分是为了帮助读者更上一层楼,教师可以根据实际情况,选择其中部分内容进行介绍(标有“*”的例题有一定难度)。为了提高学生的编程和调试能力,建议教师指导学生学习其中的实例程序。
(3) 单、双号习题成对做。单号习题提供参考答案,双号习题则在类型上与前一单号习题相同,侧重点也接近。基础部分中提供的习题都是最基本的,题量也不多,建议读者全部做完,提高部分中的习题可根据情况选做(标有“*”的习题有一定难度)。
(4) 选作上机训练题中的扩展题。在完成训练题的基础上可根据不同层次的学生情况,选作扩展题。
本书由崔武子主编,赵重敏和李青参与编写,齐华山和李红豫承担了部分工作。本书由鲍有文教授审阅。在编写本书的过程中,得到谭浩强教授和高林教授的热情关怀和指导。刘莹老师对第1版书提出许多宝贵意见,在此一并表示真挚的感谢。
限于作者水平,书中难免有错误和疏漏之处,恳请读者批评和指正。
作者电子邮件地址:ldtwuzi@163.com
作者
2007年2月
第1章C语言基础知识1
1.1C语言概述2
1.1.1什么是C语言2
1.1.2C程序形式和程序执行过程3
1.2简单C程序与上机步骤4
1.2.1简单C程序4
1.2.2上机步骤5
1.3数据类型7
1.4常量与变量8
1.4.1常量与变量的概念8
1.4.2整型常量与变量10
1.4.3实型常量与变量12
1.4.4字符型常量与变量13
1.5运算符和表达式16
1.5.1算术运算符和表达式16
1.5.2赋值运算符和表达式18
1.5.3逗号运算符和表达式20
1.5.4自加、自减运算符20
1.6提高部分21
1.6.1Turbo C 2.0集成环境21
1.6.2Visual C++ 6.0集成环境24
1.6.3赋值运算符的进一步讨论28
1.6.4自加、自减运算符的进一步讨论29
1.6.5整型数据类型的进一步讨论31
1.7上机训练33
习题134
基础部分34
提高部分35
第2章顺序结构程序设计37
2.1结构化程序设计的基本结构38
2.1.1语句的概念38
2.1.2三种基本结构38
2.2赋值语句40
2.3输入输出语句41
2.3.1格式输入输出函数41
2.3.2字符输入输出函数45
2.4提高部分46
2.4.1输入输出函数的进一步讨论46
2.4.2实例的部分程序50
2.5上机训练51
习题253
基础部分53
提高部分53
C程序设计教程(第2版)
第3章分支结构程序设计55
3.1关系运算符和关系表达式56
3.1.1关系运算符56
3.1.2关系表达式56
3.2逻辑运算符和逻辑表达式57
3.2.1逻辑运算符57
3.2.2逻辑表达式58
3.3if语句59
3.3.1if语句的一般形式60
3.3.2if语句的嵌套67
3.4switch语句69
3.5提高部分72
3.5.1if、switch语句的进一步讨论72
3.5.2条件运算符和表达式79
3.5.3实例的部分程序80
3.6上机训练82
习题384
基础部分84
提高部分86
第4章循环结构程序设计87
4.1for语句88
4.2while语句97
4.3dowhile语句100
4.4break语句和continue语句103
4.4.1循环体中使用break语句103
4.4.2循环体中使用continue语句105
4.5循环语句的嵌套105
4.6提高部分109
4.6.1for语句的应用109
4.6.2三种循环的对比112
4.6.3goto语句以及用goto语句构成的循环116
4.6.4实例的部分程序117
4.7上机训练120
习题4123
基础部分123
提高部分126
第5章数组128
5.1一维数组129
5.1.1一维数组的定义和引用129
5.1.2一维数组的初始化132
5.1.3一维数组程序举例135
5.2字符串141
5.2.1字符串的概念和字符串的输入输出141
5.2.2字符串处理函数143
5.3二维数组146
5.4提高部分149
5.4.1数组的补充程序举例149
5.4.2实例的部分程序158
5.5上机训练160
习题5163
基础部分163
提高部分164
第6章指针166
6.1变量的地址和指针变量的概念167
6.2指针变量的定义和引用167
6.3指针和一维数组170
6.3.1使指针变量指向一维数组171
6.3.2对指针的算术运算172
6.4指针和字符串175
6.4.1通过字符数组名引用字符串175
6.4.2通过指针变量引用字符串176
6.5提高部分178
6.5.1指针的进一步讨论178
6.5.2指针和二维数组180
6.5.3实例的部分程序183
6.6上机训练193
习题6196
基础部分196
提高部分197
第7章函数198
7.1函数的引例199
7.2函数的定义与调用202
7.2.1函数的定义202
7.2.2函数的调用203
7.2.3函数的调用过程208
7.2.4函数的返回值211
7.2.5被调函数的原型说明215
7.3函数的嵌套调用216
7.4数组做实参217
7.4.1一维数组名做实参217
7.4.2二维数组名做实参220
7.5变量的存储类别221
7.5.1内部变量和外部变量221
7.5.2动态存储变量和静态存储变量223
7.6提高部分224
7.6.1函数的递归调用224
7.6.2带参数的main函数227
7.6.3指向函数的指针231
7.6.4变量存储类别的进一步讨论233
7.6.5预处理命令235
7.6.6实例的部分程序238
7.7上机训练241
习题7244
基础部分244
提高部分247
第8章结构体和其他构造类型249
8.1结构体类型变量的定义和使用250
8.1.1结构体类型的概念和声明250
8.1.2结构体类型变量的使用251
8.2结构体和函数调用257
8.3提高部分261
8.3.1结构体的进一步讨论261
8.3.2链表264
8.3.3共用体272
8.3.4实例的部分程序274
8.4上机训练277
习题8279
基础部分279
提高部分280
第9章位运算282
9.1移位运算符282
9.2按位与、或、异或运算符284
9.3按位取反运算符285
9.4提高部分286
9.4.1位运算的复合赋值运算符286
9.4.2负整型数据的位运算286
9.4.3无符号整型数据的位运算287
9.4.4不同类型数据之间的位运算287
习题9287
基础部分287
提高部分288
第10章文件289
10.1文件的概述290
10.2文件的基本操作291
10.3提高部分299
10.3.1文件读写操作的进一步讨论299
10.3.2文件的定位操作305
10.3.3实例的部分程序309
10.4上机训练312
习题10314
基础部分314
提高部分315
附录AC语言关键字316
附录B常用字符与ASCII代码对照表317
附录C运算符的优先级和结合方向319
附录D常用C库函数320
附录E常见错误、警告信息表324
附录F关键字、运算符、库函数索引326
附录G单号题参考答案329
参考文献348