第1章 C语言程序设计基本概念 1
1.1 引言 1
1.2 C语言的发展历史以及特点 1
1.2.1 C语言的发展历史 1
1.2.2 C语言的特点 1
1.3 程序设计语言 2
1.4 简单的C语言程序实例 3
1.5 C语言程序的结构 4
1.6 C语言程序的编辑、编译和执行 4
1.7 算法 5
1.7.1 算法的概念和特点 5
1.7.2 算法的描述 5
1.8 结构化程序设计方法 8
1.8.1 结构化程序设计的概念 8
1.8.2 结构化程序设计的三种基本结构 9
1.9 本章小结 10
习题 11
第2章 数据类型、运算符和表达式 12
2.1 引言 12
2.2 C语言的字符集和词法约定 12
2.2.1 C语言的字符集 12
2.2.2 C语言使用的词汇 13
2.3 常量和变量 14
2.3.1 常量 14
2.3.2 变量 14
2.4 数据类型 14
2.4.1 整型数据 15
2.4.2 实型数据 17
2.4.3 字符型数据 18
2.5 运算符及表达式 21
2.5.1 C语言的运算符 21
2.5.2 算术运算符和算术表达式 21
2.5.3 赋值运算符和赋值表达式 23
2.5.4 逗号运算符和逗号表达式 24
2.6 运算符的优先级和结合性 24
2.7 C语言中的数据类型转换 25
2.7.1 数值型数据间混合运算时的类型转换规则 25
2.7.2 赋值时的类型转换规则 26
2.7.3 强制类型转换 26
2.8 本章小结 26
自我测验 27
习题 27
第3章 顺序结构程序设计 28
3.1 引言 28
3.2 C语句分类 28
3.3 赋值语句 29
3.4 基本输入、输出操作的实现 30
3.4.1 字符输出函数 30
3.4.2 字符输入函数 31
3.4.3 格式化输出函数 31
3.4.4 格式化输入函数 34
3.5 应用举例 35
3.6 本章小结 37
自我测验 37
习题 38
第4章 选择结构程序设计 40
4.1 引言 40
4.2 关系运算符与关系表达式 40
4.3 逻辑运算符与逻辑表达式 41
4.4 条件语句 42
4.4.1 if语句的三种形式 42
4.4.2 if语句的嵌套 45
4.4.3 条件运算符与条件表达式 46
4.5 多分支选择语句 46
4.5.1 switch语句的基本概念 46
4.5.2 break语句在多分支选择结构中的应用 48
4.6 应用举例 49
4.7 本章小结 51
自我测验 51
习题 52
第5章 循环结构程序设计 53
5.1 引言 53
5.2 while语句 53
5.3 do-while语句 55
5.4 for语句 55
5.5 continue语句和break语句在循环体中的应用 56
5.5.1 continue语句在循环体中的应用 56
5.5.2 break语句在循环体中的应用 56
5.6 循环的嵌套 57
5.7 goto语句与标号 59
5.8 应用举例 59
5.9 本章小结 61
自我测验 61
习题 62
第6章 函数 64
6.1 引言 64
6.2 函数的定义和使用 64
6.2.1 函数的概念 64
6.2.2 函数的定义 64
6.2.3 函数的调用 66
6.2.4 函数参数传递 68
6.2.5 函数返回值 69
6.2.6 函数的嵌套及递归调用 70
6.3 变量的作用域与存储类别 73
6.3.1 局部变量与全局变量 73
6.3.2 动态存储方式与静态存储方式 76
6.4 应用举例 80
6.5 本章小结 81
自我测验 82
习题 82
第7章 编译预处理命令 84
7.1 引言 84
7.2 预处理指令#include:文件包含 84
7.3 预处理指令#define:宏定义 85
7.3.1 无参数宏 85
7.3.2 带参数宏 87
7.4 条件编译 90
7.4.1 #if、#else、#elif及#endif 90
7.4.2 #ifdef和#ifndef 90
7.5 本章小结 91
自我测验 91
习题 92
第8章 数组 94
8.1 引言 94
8.2 一维数组 94
8.2.1 一维数组的定义与引用 94
8.2.2 一维数组的初始化 95
8.3 二维数组 97
8.3.1 二维数组的定义与引用 97
8.3.2 二维数组的初始化 99
8.4 应用举例 100
8.4.1 插入算法 100
8.4.2 选择排序算法 101
8.5 本章小结 102
自我测验 102
习题 103
第9章 指针 105
9.1 引言 105
9.2 指针变量的声明、引用和初始化 105
9.2.1 指针变量的声明 106
9.2.2 指针变量的初始化 106
9.2.3 指针变量的引用 107
9.3 指针的运算 107
9.3.1 赋值运算 107
9.3.2 算术运算 109
9.3.3 两指针变量进行关系运算 110
9.4 指针与数组作为函数参数 110
9.4.1 指针与一维数组 111
9.4.2 指针与二维数组 112
9.4.3 指针作为函数参数 115
9.4.4 使用指针与使用数组的区别 119
9.5 返回指针的函数 121
9.6 指针数组和指向指针的指针 123
9.6.1 指针数组 123
9.6.2 指向指针的指针 124
9.7 指向函数的指针 126
9.8 应用举例 126
9.9 本章小结 128
自我测验 129
习题 130
第10章 字符串及其操作 133
10.1 引言 133
10.2 字符与字符串 133
10.3 字符数组与字符串 134
10.3.1 字符数组的定义与初始化 134
10.3.2 字符串与指针 136
10.3.3 字符串的输入、输出 138
10.3.4 常用的字符串处理函数 141
10.4 字符串作为函数参数 143
10.5 应用举例 145
10.6 本章小结 147
自我测验 148
习题 149
第11章 结构体与共同体 151
11.1 引言 151
11.2 结构体类型及结构体变量的定义和初始化 151
11.2.1 结构体类型的定义 151
11.2.2 结构体变量的定义 152
11.2.3 结构体变量的引用和初始化 153
11.3 结构体数组 155
11.3.1 结构体数组的定义 155
11.3.2 结构体数组的引用和初始化 156
11.4 结构体指针 158
11.4.1 指向结构体变量的指针 158
11.4.2 指向结构体数组元素的指针 159
11.5 结构体作为函数参数 161
11.5.1 结构体变量作为函数参数 161
11.5.2 结构体指针变量作为函数参数 162
11.5.3 函数的返回值为结构体类型 163
11.6 结构体应用举例 164
11.7 链表 165
11.7.1 问题的提出 165
11.7.2 链表的定义和特点 166
11.7.3 动态链表的建立 167
11.7.4 动态链表的插入操作 169
11.7.5 动态链表的删除操作 171
11.8 共同体 173
11.8.1 共同体类型与共同体变量的定义 174
11.8.2 共同体变量的引用和初始化 175
11.8.3 共同体变量的应用 175
11.9 用typedef定义类型 175
11.10 本章小结 177
自我测验 177
习题 178
第12章 文件处理 181
12.1 引言 181
12.2 数据流和文件的概念 181
12.3 文件的操作 181
12.3.1 文件指针 182
12.3.2 文件的打开和关闭 183
12.3.3 文件的顺序读写 184
12.3.4 文件的随机读写 189
12.4 应用举例 191
12.5 本章小结 194
自我测验 195
习题 195
第13章 面向对象技术与C++语言概述 198
13.1 引言 198
13.2 面向对象技术 198
13.3 C++简介 199
13.3.1 C++对C的扩充 200
13.3.2 C++中的类 203
13.4 面向对象程序设计的简单示例 205
13.4.1 封装性示例 205
13.4.2 继承性示例 205
13.4.3 多态性示例 206
13.5 本章小结 207
自我测验 208
附录A 常用字符与ASCII码对照表 209
附录B C语言关键字 210
附录C C运算符的优先级与结合性 211
附录D C库函数 213
参考文献 217