本教材以面向应用型人才培养为目标,以非传统的组织结构为创新点,以全程伴随上机实践为特色,简洁、通俗、直观、易懂地讲述C/C 程序设计。第1~5章讲述了C语言的背景知识、上机环境以及基础知识,包括数据类型、变量和表达式以及顺序、分支、循环三大结构语句及其编程。第6~9章介绍C语言的重点部分,包括数组、函数和指针。第10~12章是提高部分,从结构体引出类,介绍C 的基础知识和文件,以适应学完本书后直接参加全国高校计算机水平考试(二级C )的需要。
全书直接采用C 的cin和cout进行输入输出,摒弃了C语言中的printf和scanf函数调用。在三部分内容之间两次集中讲解典型题和难题的解题思路,增加了相当篇幅的动态调试内容,非常有利于学习者上机实践以及有效地提高编程、调试能力。
本书适合作为高等学校非计算机专业学生C/C 程序设计教材,也可作为工程技术人员的自学和参考资料。
本教材以面向应用型人才培养为目标,以非传统的组织结构为创新点,以全程伴随上机实践为特色,简洁、通俗、直观、易懂地讲述C/C 程序设计。1-5章讲述了C语言的基础知识,包括数据类型、变量和表达式以及顺序、分支、循环三大结构语句及其编程。6-9章介绍C语言的重点部分,包括数组、函数和指针。10-12章是提高部分,第10章从结构体引出类,接着两章为C 的基础知识和文件,以适应学完本书后直接参加全国高校计算机水平考试(二级C )的需要。
前言
C语言程序设计的重要性本毋庸赘言,但在多年高校的教学工作中,编者深切体会到,对学习者而言,学习C程序设计的过程不仅是非常重要的专业基础训练,更应该是锻炼自己的耐心和毅力,培养独立思考、严谨缜密的逻辑思维方式,提高发现问题、解决问题的实践能力的大好时机。好好学习、认真实践,其意义远大于学会一种程序设计语言,对后续课程的学习和今后的工作都大有裨益!本教材面向应用型人才培养,内容安排由易到难,逐步深入,免得学习者失去学习信心。另外,一开始就使学习者可以上机实践,之后全程理论和实践互补学习,有利于掌握程序设计的技巧,提高编程能力。扎实地掌握好C语言的编程后,自然过渡到C 编程。鉴于C 全国高校计算机水平考试迫切需要一本适合的教材,于是有了这本C/C 结合的书。本教材所有例题的输入和输出直接采用C 的cin和cout,摒弃了C语言中的printf和scanf函数调用。仍愿意使用printf和scanf函数的学习者也可以选用本书,将例题中的输入输出换回C语言的函数,也是一个很好的训练。本教材的特色之一在于面向现在的年轻人。众所周知,现在的90后学习者已经是读图一代了。他们对于传统教材的大段文字描述很不耐烦,故而本书从内容上加了阴影和警示,适时提出问题,版面上讲究编排,尽量将程序、运行结果和相关解释组织在一起,增加重点概念的图解,以便更好地帮助学习者理解C/C 程序设计。本教材的特色之二是章节的全新组织。前5章打破C语言教材按内容体系组织的传统,三大结构一起介绍,以编程基础Ⅰ、Ⅱ和编程进阶3章从简到难、循序渐进地增加学习难度,这样安排非常有利于尽早上机实践: 从第1章的学习开始就可以辅以上机练习,使计算机这个程序设计最好的老师全程伴随学习者,发挥其最大的作用!对于后面繁难的内容,尽量系统化: 函数和类以三部曲的方式介绍; 指针部分以4个强大功能为线索串起来; 构造类型从数组引出结构体、共用体,进而引出类; 面向对象以三大特性为线索来组织,条理清晰,使学习者感受到知识的连贯性、系统性,更容易掌握这些比较烦琐的内容。教材的特色之三是增加了大量例题和解题思路,引导学生自己学会如何编程: 两次集中总结典型题目。第一次在三大结构讲完后的第5章增加了主要算法题目的总结; 第二次在函数之后专设了第8章,本着授人以鱼不如授人以渔的思想,将编程思想、逐步完善和单步调试形象地称为三根鱼竿,第一根鱼竿: 编程思想顺杆爬,对一些感到无从下手的难题,如何去思考?第二根鱼竿: 大程序的逐步完善犹如鱼竿一节节加长,逐步完善程序代码,以及化繁为简,逐步完成复杂题目的编程技巧; 第三根鱼竿: 程序单步调试如盲者用竿儿步步试探,查找程序的逻辑错误和运行错误。这样对学习者的编程、上机、调试等各方面都有促进作用。教材还有另外两个特色。一个是强调动态调试,书中在第5章和第8章两处给出单步跟踪实例,有心的学习者可以模仿这些实例自己上机实践,自学动态调试; 另一个是在大多数章最后将该章的常见错误列成表格,以便学习者仔细阅读并作为上机参考,可透彻理解各个知识点,很快成为编程高手。全书由张正明主编并编写第7、9章,第10~12章由卢晶琦编写,第1、6、8章由王丽娟编写,第2~5章由孟庆元编写。在本书成书的过程中,受到电子科技大学中山学院领导及清华大学出版社编辑们的大力支持,在此一并表示感谢。选用本书的教师可免费索取电子教案、所有例题代码及作业和模拟题的答案。如对本书有疑问和建议,可与编者联系,QQ: 704393383。希望本书能给注重实践的学习者以切实的帮助。由于编者水平有限,时间仓促,书中可能有不足之处,殷切盼望读者提出宝贵意见。编者2016年1月
目录
第1章C/C 语言概述
1.1计算机组成
1.1.1计算机的硬件系统
1.1.2计算机的软件系统
1.2计算机语言及其执行方式
1.3C/C 语言的发展简史与重要性
1.3.1C/C 语言的发展简史
1.3.2C的优点
1.3.3C程序设计是非常重要的基本训练
1.4简单的C/C 程序示例
1.5在VC 6.0中实现C程序
1.5.1基本概念
1.5.2VC 6.0集成环境介绍
1.5.3C/C 单文件应用程序的实现过程
1.5.4程序中的两类错误
1.5.5培养严谨的逻辑思维和工作作风
1.6本章知识要点和常见错误列表
习题
第2章编程基础Ⅰ
2.1结构化程序设计及C语句综述
2.1.1结构化程序设计
2.1.2C语言中的语句
2.2顺序结构三大结构之一
2.2.1赋值语句
2.2.2C中的数据输入与输出
2.2.3C 中的数据输入与输出
2.2.4程序设计举例
2.3分支结构三大结构之二
2.3.1if…else…语句
2.3.2if语句
2.4循环结构三大结构之三
2.4.1while循环语句
2.4.2do…while循环语句
2.5本章知识要点和常见错误列表
习题
第3章C语言的基础知识
3.1C语言的标识符与关键字
3.1.1标识符
3.1.2关键字
3.2基本数据类型
3.3常量与变量
3.3.1常量
3.3.2变量
3.3.3变量的初始化
3.4运算符
3.4.1算术运算符和赋值运算符
3.4.2关系运算符和逻辑运算符
3.4.3条件运算符
3.4.4逗号运算符
3.4.5位运算符
3.5表达式
3.6应用举例
3.7本章知识要点和常见错误列表
习题
第4章编程基础Ⅱ
4.1C中的条件判断
4.2复杂的分支结构
4.2.1分支结构的嵌套
4.2.2else if语句
4.2.3if语句注意事项
4.2.4多分支结构switch语句
4.3for循环语句
4.3.1for循环语句的一般形式
4.3.2for语句使用注意事项
4.3.3三种循环语句的比较
4.4C 中的输出格式控制
4.5好程序的标准与算法的选择
4.5.1好程序的标准
4.5.2选择合适的算法
4.6本章知识要点和常见错误列表
习题
第5章编程进阶
5.1复杂的循环结构
5.1.1循环的嵌套
5.1.2循环控制语句break和continue
5.1.3无限循环的应用
5.2典型题目的编程
5.2.1累加与累乘
5.2.2穷举搜索法
5.2.3数位提取问题
5.2.4递推与迭代
5.3程序的动态调试
5.3.1单步调试的过程
5.3.2单步调试的实例
5.4本章知识要点
习题
第6章数组批量数据的处理
6.1数组的概念
6.2一维数组
6.2.1一维数组的定义和引用
6.2.2一维数组的初始化
6.2.3数组的越界问题
6.2.4应用举例
6.3二维数组
6.3.1二维数组的定义和引用
6.3.2二维数组的初始化
6.3.3应用举例
6.4字符数组和字符串
6.4.1字符数组的定义和初始化
6.4.2字符串
6.4.3字符数组的输入和输出
6.4.4应用举例
6.5本章知识要点和常见错误列表
习题
第7章函数及变量存储类型
7.1为什么要用函数
7.1.1模块化的优越性及C的实现
7.1.2函数概述
7.2函数三部曲
7.2.1函数声明函数三部曲之一
7.2.2函数定义函数三部曲之二
7.2.3函数调用函数三部曲之三
7.2.4实参到形参的单向值传递
7.2.5函数的返回值
7.3变量的存储类型
7.3.1变量的作用域和生存期
7.3.2变量的动态存储和静态存储
7.4函数的嵌套与递归
7.4.1函数的嵌套调用
7.4.2函数的递归调用
7.5本章知识要点和常见错误列表
习题
第8章编程深入
8.1授人以鱼不如授人以渔
8.1.1编程思想顺杆儿爬
8.1.2大程序逐步完善鱼竿一节节加长
8.1.3程序单步调试用竿儿步步试探
8.1.4单步调试的三大功能及其他调试手段
8.2典型题目的编程思路及优化
8.2.1分解质因数
8.2.2数字字符转换成十进制数
8.2.3数组插入
8.2.4数组元素排序
8.3常用字符串处理函数及其应用
8.4编译预处理
8.4.1宏定义
8.4.2文件包含
8.5关于全国高校计算机水平考试
8.6本章知识要点
习题
第9章指针
9.1指针的概念与定义
9.1.1内存地址的概念
9.1.2指针变量的概念与定义
9.2指针的使用
9.2.1指针的两个运算符
9.2.2指针变量的初始化与安全性
9.2.3指针运算
9.3间接访问指针的强大功能之一
9.3.1利用指针变量间接访问某一个单元
9.3.2利用指针变量访问一片连续的存储区
9.4指针形参返回函数多个数值指针的强大功能之二
9.4.1普通变量作函数参数
9.4.2指针变量作函数参数
9.5灵活引用数组指针的强大功能之三
9.5.1数组元素的4种表示方法
9.5.2数组作函数参数
9.5.3指向字符串的指针
9.5.4字符数组与字符指针变量比较
9.6动态分配内存指针的强大功能之四
9.7复杂指针简介
9.7.1指针数组
9.7.2指针与函数
9.7.3复杂指针
9.8本章知识要点和常见错误列表
习题
第10章结构体和类
10.1结构体
10.1.1结构体类型的定义
10.1.2结构体变量的定义
10.1.3结构体变量及其成员的引用
10.1.4结构体变量的初始化
10.1.5应用举例
10.2结构体嵌套
10.3结构体数组
10.3.1结构体数组的定义与引用
10.3.2结构体型数组的初始化
10.3.3应用举例
10.4结构体指针
10.4.1结构体指针的定义
10.4.2结构体指针的使用
10.5共用体
10.6从结构体过渡到类
10.6.1结构体类型的局限性及类的引出
10.6.2类的声明类三部曲之一
10.6.3类的成员函数定义类三部曲之二
10.6.4类的应用类三部曲之三
10.6.5类之实例
10.7本章知识要点和常见错误列表
习题
第11章C 基础
11.1面向对象的程序设计
11.1.1面向过程与面向对象
11.1.2面向对象的三大特性
11.2封装性特性之一
11.2.1构造函数
11.2.2析构函数
11.3函数的重载
11.4继承性特性之二
11.4.1类的层次结构
11.4.2继承的访问控制
11.4.3派生类的构造和析构函数
11.4.4多重继承与虚基类
11.4.5继承之综合实例
11.5多态性特性之三
11.5.1多态性
11.5.2虚函数
11.5.3多态之综合实例
11.6本章知识要点及常见错误列表
习题
第12章C 流文件
12.1文件和流
12.2文件的打开和关闭
12.2.1打开文件
12.2.2关闭文件
12.3文件的读写
12.3.1文本文件的读写
12.3.2二进制文件的读写
12.3.3随机文件的读写
12.4本章知识要点和常见错误
习题
附录AASCII码表
附录BVC 6.0常见错误列表
附录CC语言常用库函数表
附录D各章习题部分答案
附录E模拟题训练
参考文献