本书是在吸收借鉴已有教材长处的基础上,根据作者多年的教学经验编写而成。全书选材经典,内容丰富,结构清晰,层次分明,通俗易懂。本书讲述力求理论联系实际、循序渐进,注重培养读者分析问题和程序设计的能力,注重培养良好的程序设计风格和习惯。全书通过大量例题验证语法和说明程序设计方法,并且,为了使读者更好地掌握各章节内容,章末配有大量精选的习题。通过本书的学习和解题练习,读者既能迅速掌握C语言的基础知识,又能很快学会C语言的编程技术,提高解决实际问题的能力。
本书针对非计算机专业初学者的特点编写,教材内容突出C语言程序设计的主干知识,淡化分支知识,摒弃末叶知识。本书把提高编程能力、增强编程技巧放在重要地位,在程序设计教学过程中避免陷入学习程序设计语言繁杂的语法和格式,而是将主要精力集中在所要解决的实际问题上,从知识点以及具体问题出发,重点掌握如何通过程序设计来解决问题。
本书中的程序都是在Visual C++下进行调试的,在其他C语言环境下基本上都可以运行通过。
C语言是目前最为流行的计算机程序设计语言之一,在当今软件开发领域有着十分广泛的应用,是全国高校普遍开设的一门计算机基础课程。本书以程序设计为主线,全面、系统地讲述了C语言的算法基础、基本概念及其程序设计的基本方法。
本书组织精练、内容全面、概念清晰、层次分明。讲述力求理论联系实际、循序渐进、深入浅出、通俗易懂,注重培养读者分析问题和程序设计的能力,注重培养良好的程序设计风格和习惯,具有较强的实用性。
本书可作为高等院校计算机程序设计教学用书,也可作为计算机等级考试和工程技术人员自学用书。
第1章 C语言概述1
1.1 程序与程序设计语言1
1.1.1 程序的基本概念1
1.1.2 程序设计语言2
1.2 C语言的历史背景3
1.3 C语言的特点4
1.4 简单的C程序介绍5
1.4.1 简单的C程序5
1.4.2 C程序的结构特点6
1.4.3 程序设计风格7
1.5 C语言编译环境8
小结12
习题12
第2章 C语言语法基础13
2.1 C语言字符集和词汇13
2.1.1 C语言字符集13
2.1.2 C语言词汇13
2.2 常量与变量15
2.3 数据类型15
2.3.1 整型数据16
2.3.2 实型数据18
2.3.3 字符型数据19
2.4 运算符和表达式21
2.4.1 简单赋值运算符及其表达式22
2.4.2 算术运算符及其表达式23
2.4.3 复合赋值运算符及其表达式24
2.4.4 长度测试运算符25
2.4.5 逗号运算符及其表达式25
2.5 数据类型转换26
小结28
习题28
第3章 C程序设计初步31
3.1 算法31
3.1.1 算法的概念31
3.1.2 算法描述32
3.2 结构化程序设计方法简介34
3.3 C语言语句分类35
3.4 数据的输入输出37
3.4.1 printf函数(格式输出函数)37
3.4.2 scanf函数(格式输入函数)39
3.4.3 字符输入输出函数41
3.5 顺序程序设计42
小结44
习题44
第4章 选择结构程序设计47
4.1 关系运算符和关系表达式47
4.1.1 关系运算符47
4.1.2 关系表达式48
4.2 逻辑运算符和逻辑表达式49
4.2.1 逻辑运算符49
4.2.2 逻辑表达式50
4.3 if语句51
4.3.1 单分支结构if语句51
4.3.2 双分支选择结构if...else语句53
4.3.3 多分支选择结构if...else if语句54
4.3.4 if语句的嵌套55
4.4 switch语句57
小结59
习题60
第5章 循环结构程序设计64
5.1 goto语句64
5.2 while语句65
5.3 do...while语句67
5.4 for语句69
5.5 循环的嵌套71
5.6 break和continue语句72
5.6.1 break语句72
5.6.2 continue语句73
5.7 程序举例74
小结76
习题76
第6章 数组82
6.1 一维数组82
6.1.1 一维数组的定义82
6.1.2 一维数组元素的引用83
6.1.3 一维数组的初始化84
6.1.4 一维数组程序举例85
6.2 二维数组90
6.2.1 二维数组的定义90
6.2.2 二维数组元素的引用91
6.2.3 二维数组的初始化93
6.2.4 二维数组程序举例94
6.3 字符数组97
6.3.1 字符数组的定义97
6.3.2 字符数组的初始化98
6.3.3 字符串和字符串结束标志99
6.3.4 字符数组的输入输出99
6.3.5 字符串处理函数101
6.3.6 字符数组程序举例105
小结108
习题109
第7章 函数114
7.1 概述114
7.1.1 C程序的一般结构114
7.1.2 函数分类115
7.2 函数的定义116
7.2.1 函数定义的一般形式116
7.2.2 函数的返回值119
7.3 函数调用120
7.3.1 函数调用的格式和执行过程120
7.3.2 形式参数与实际参数的数据传递121
7.3.3 函数声明123
7.4 函数的嵌套与递归调用126
7.4.1 函数的嵌套调用126
7.4.2 函数的递归调用127
7.5 数组名作为函数参数130
7.6 变量的作用域133
7.6.1 局部变量133
7.6.2 全局变量134
7.7 变量的存储类型137
7.7.1 静态存储变量138
7.7.2 动态存储变量140
7.8 内部函数和外部函数140
小结142
习题142
第8章 指针148
8.1 概述148
8.2 指针变量149
8.2.1 指针变量的定义149
8.2.2 指针变量的引用150
8.2.3 指针的运算153
8.3 指针与函数155
8.3.1 指针作为函数参数155
8.3.2 指针型函数157
8.3.3 函数指针变量158
8.4 指针与数组161
8.4.1 指向数组元素的指针161
8.4.2 通过指针引用数组元素162
8.4.3 指向多维数组的指针和指针变量165
8.4.4 指向数组的指针变量作函数参数169
8.5 指针与字符串171
8.6 指针数组175
8.7 指向指针的指针178
8.8 main函数的参数182
8.9 动态存储分配183
小结185
习题187
第9章 预处理192
9.1 宏定义192
9.1.1 无参宏定义192
9.1.2 带参宏定义195
9.2 文件包含198
小结199
习题199
第10章 结构体和共用体201
10.1 结构体类型与变量201
10.2 结构体成员的访问和初始化204
10.2.1 结构体成员的访问204
10.2.2 结构体变量初始化205
10.2.3 嵌套结构的初始化206
10.3 结构体数组207
10.3.1 结构体数组的定义207
10.3.2 结构体数组的初始化207
10.3.3 结构体数组元素的访问208
10.4 指向结构体类型数据的指针210
10.4.1 指向结构体变量的指针210
10.4.2 指向结构体数组的指针212
10.4.3 结构体指针变量作函数参数213
10.5 用指针处理链表215
10.5.1 单向链表215
10.5.2 链表的操作216
10.6 共用体219
10.6.1 共用体的概念219
10.6.2 共用体变量的定义和引用219
10.7 枚举类型222
10.7.1 枚举类型的定义222
10.7.2 枚举元素的值223
10.8 用typedef进行类型定义224
10.8.1 类型定义的形式224
10.8.2 类型定义的使用224
小结226
习题227
第11章 位运算233
11.1 位运算概述233
11.2 位运算符233
小结238
习题238
第12章 文件系统241
12.1 文件概述241
12.1.1 C语言中的文件241
12.1.2 缓冲文件系统242
12.1.3 文件指针243
12.2 文件的操作243
12.2.1 文件的打开/关闭243
12.2.2 文件结束标志EOF和文件结束检测函数feof244
12.2.3 字符读写函数fgetc和fputc245
12.2.4 字符串读写函数fgets和fputs247
12.2.5 格式化的读写函数fscanf和fprintf248
12.2.6 成块读写函数fread和fwrite250
12.3 随机读写文件251
小结253
习题253
第13章 从C转向C++255
13.1 C++程序的结构255
13.2 对象与类256
13.2.1 类256
13.2.2 对象258
13.2.3 构造函数和析构函数260
13.3 继承与多态262
13.3.1 类的继承262
13.3.2 多态性和虚函数264
13.3.3 抽象类265
小结265
习题265
附录A 标准字符与ASCII代码对照表267
附录B 运算符的优先级和结合性268
附录C C常用库函数270