第1章 C语言程序设计概述 1
1.1 编程的预备知识 1
1.1.1 学习编程的心理准备 1
1.1.2 认识编程 2
1.1.3 数据在计算机中的存储形式 2
1.2 程序设计语言的基础 5
1.2.1 程序设计语言的发展 5
1.2.2 程序设计语言的特点及发展趋势 8
1.2.3 程序设计的基本过程 8
1.3 结构化程序设计 12
1.3.1 什么是结构化程序设计 12
1.3.2 结构化程序设计的基本原则 12
1.3.3 结构化程序设计的基本结构 12
1.3.4 结构化程序设计的基本特点 13
1.4 C语言的发展历史及特点 13
1.4.1 C语言的发展历史 13
1.4.2 C语言的特点 15
1.4.3 C语言的应用 16
1.5 开发环境简介 16
1.5.1 Turbo C开发环境 16
1.5.2 Dev-C++开发环境 17
1.5.3 VC++6.0开发环境 17
1.6 编制C语言程序的基本步骤 18
1.7 本章小结 21
习题 21
第2章 C语言源程序的基本结构 23
2.1 源程序的基本结构 23
2.1.1 认识C语言源程序 23
2.1.2 源程序的基本结构 25
2.2 源程序的标识符 26
2.3 源程序的基本语句 27
2.4 带参数的main函数 28
2.5 由多个文件构成的源程序 29
2.6 本章小结 31
2.6.1 知识梳理 31
2.6.2 如何编程 31
习题 32
第3章 基本数据类型、运算符和表达式 35
3.1 C语言的数据类型 35
3.2 数据的表现形式 36
3.2.1 常量 36
3.2.2 变量 37
3.3 基本数据类型 37
3.3.1 整型数据 37
3.3.2 实型数据 40
3.3.3 字符型数据 42
3.3.4 字符串常量 44
3.4 常用运算符与表达式 44
3.4.1 算术运算符及其表达式 45
3.4.2 自增自减运算符、负号运算符 45
3.4.3 赋值运算符及其表达式 46
3.4.4 强制类型转换运算符 48
3.4.5 逗号运算符及其表达式 49
3.4.6 sizeof运算符 49
3.4.7 位运算符及其表达式 49
3.5 常见数学运算表达式在C语言中的表示 52
3.6 本章小结 52
3.6.1 知识梳理 52
3.6.2 常见错误集锦 53
习题 54
第4章 顺序结构程序设计 57
4.1 3种基本的程序结构 57
4.2 顺序结构程序设计的思想 58
4.3 实现顺序结构程序设计的基本语句 59
4.3.1 赋值语句 59
4.3.2 数据的基本输入与输出 59
4.4 顺序结构程序设计的典型应用 65
4.4.1 数字分离问题 65
4.4.2 图形的面积等计算问题 66
4.4.3 数的交换问题 67
4.4.4 大小写转换问题 68
4.5 本章小结 69
4.5.1 知识梳理 69
4.5.2 常见错误集锦 69
习题 70
第5章 选择结构程序设计 72
5.1 关系运算符、逻辑运算符和条件运算符 72
5.1.1 关系运算符及其表达式 72
5.1.2 逻辑运算符及其表达式 73
5.1.3 条件运算符及其表达式 75
5.2 选择结构程序设计 76
5.2.1 if语句 76
5.2.2 switch语句 80
5.3 选择结构程序设计的典型应用 83
5.3.1 数的最值问题 83
5.3.2 方程根问题 84
5.3.3 奖金问题 85
5.3.4 运算器问题 87
5.4 本章小结 89
5.4.1 知识梳理 89
5.4.2 常见错误集锦 91
习题 93
第6章 循环结构程序设计 99
6.1 循环结构程序设计 99
6.1.1 for语句 100
6.1.2 while语句 102
6.1.3 do-while语句 103
6.1.4 goto语句 104
6.1.5 for语句的其他格式 105
6.1.6 循环嵌套 107
6.1.7 break语句与continue语句 110
6.2 循环结构语句的选择 112
6.3 循环结构程序设计的典型应用 113
6.3.1 累加或累乘问题 113
6.3.2 数的判断问题 115
6.3.3 经典数学问题 116
6.3.4 图形输出问题 118
6.4 本章小结 120
6.4.1 知识梳理 120
6.4.2 常见错误集锦 121
习题 121
第7章 数组 126
7.1 一维数组 126
7.1.1 一维数组的定义和引用 126
7.1.2 一维数组的初始化 127
7.2 二维数组 130
7.2.1 二维数组的定义和引用 130
7.2.2 二维数组的初始化 130
7.3 字符串与字符数组 136
7.3.1 字符数组的定义和引用 136
7.3.2 字符数组的赋值 136
7.3.3 常用字符串处理函数 137
7.4 数组的典型应用 139
7.4.1 最大值和最小值问题 139
7.4.2 杨辉三角形问题 140
7.4.3 矩阵运算问题 142
7.4.4 字符串处理问题 143
7.5 本章小结 145
7.5.1 知识梳理 145
7.5.2 常见错误集锦 145
习题 145
第8章 函数 151
8.1 函数概述 151
8.2 函数的定义与调用 152
8.2.1 无参数无返回值的函数 153
8.2.2 无参数有返回值的函数 156
8.2.3 有参数无返回值的函数 157
8.2.4 有参数有返回值的函数 158
8.3 函数参数的传递方式 159
8.4 函数的嵌套与递归调用 161
8.5 变量的作用域与生存期 164
8.5.1 变量的作用域和生存期的概念 164
8.5.2 局部变量的作用域和生存期 165
8.5.3 全局变量的作用域和生存期 166
8.6 变量的存储类型 166
8.7 函数的作用域 169
8.8 函数的典型应用 170
8.8.1 数的最值问题 170
8.8.2 最大公约数和最小公倍数问题 171
8.8.3 阶乘问题 172
8.8.4 汉诺塔问题 173
8.9 本章小结 174
8.9.1 知识梳理 174
8.9.2 常见错误集锦 175
习题 175
第9章 指针 182
9.1 指针的基本概念 182
9.1.1 指针与指针变量的概念 182
9.1.2 指针变量的定义和引用 183
9.1.3 指针的基本运算 185
9.1.4 变量的指针与指向变量的指针变量 187
9.2 指针和数组 187
9.2.1 数组的指针和指向数组的指针变量 187
9.2.2 指向多维数组的指针 188
9.2.3 指针数组 191
9.3 字符数组的指针与指向字符数组的指针变量 193
9.4 指针作为函数的参数 196
9.5 指针与动态内存分配 198
9.6 指针函数与函数指针 199
9.7 多级指针 201
9.8 指针的典型应用 202
9.8.1 任意个整数求和 202
9.8.2 冒泡排序 202
9.8.3 轮转数 204
9.9 本章小结 205
9.9.1 知识梳理 205
9.9.2 常见错误集锦 206
习题 207
第10章 构造数据类型 211
10.1 结构体 211
10.1.1 结构体类型的定义 212
10.1.2 结构体变量的定义 212
10.1.3 结构体变量的引用和赋值 213
10.1.4 结构体数组 216
10.1.5 结构体和指针 219
10.2 线性链表 220
10.2.1 线性链表及其结构 220
10.2.2 线性链表的基本操作 220
10.3 共用体 224
10.3.1 共用体类型的定义 224
10.3.2 共用体变量的定义和引用 225
10.3.3 共用体变量的赋值 226
10.4 位段 228
10.5 枚举类型 230
10.6 类型定义 234
10.7 构造数据类型的典型应用:学生信息管理系统的实现 235
10.8 本章小结 241
10.8.1 知识梳理 241
10.8.2 常见错误集锦 241
习题 241
第11章 文件 244
11.1 文件的基本概念 244
11.1.1 文件 244
11.1.2 文件的分类 245
11.1.3 文件操作概述 246
11.2 文件的打开与关闭 246
11.2.1 文件指针 247
11.2.2 打开文件 247
11.2.3 关闭文件 248
11.2.4 exit()函数 249
11.3 文件的读写 249
11.3.1 文件读写函数 249
11.3.2 文件读写函数选用原则 257
11.4 文件的定位与随机读写 257
11.5 文件的出错检测 260
11.6 文件的典型应用:超市收银 262
11.7 本章小结 266
11.7.1 知识梳理 266
11.7.2 常见错误集锦 267
习题 267
第12章 预处理命令 269
12.1 预处理命令简介 269
12.2 文件包含命令 269
12.3 宏定义 271
12.4 条件编译 274
12.5 本章小结 277
12.5.1 知识梳理 277
12.5.2 常见错误集锦 277
习题 277
附录1 ASCII码对照表 279
附录2 C语言的保留字 280
附录3 C语言的运算符 281
附录4 常见的C语言库函数 283
附录5 编译常见错误中英文对照表 288
参考文献 292