第1章 C语言程序设计初步 1
1.1 C语言概述 1
1.1.1 程序设计语言 1
1.1.2 C语言简介 2
1.1.3 C++语言简介 2
1.1.4 C语言的主要特点 3
1.2 C语言程序简介 3
1.2.1 简单的C语言程序 3
1.2.2 C语言源程序的结构特点 6
1.3 运行一个C语言程序 7
1.3.1 C语言程序运行的基本步骤 7
1.3.2 Microsoft Visual C++6.0集成环境 7
1.4 小结 9
习题1 10
第2章 C语言程序基础 12
2.1 C语言程序的基本结构 12
2.2 C语言基本语法成分 13
2.2.1 C语言的字符集 13
2.2.2 标识符 13
2.2.3 关键字 14
2.2.4 运算符 14
2.2.5 分隔符 14
2.3 C语言数据类型 14
2.3.1 整型(int)数据 15
2.3.2 单精度浮点型(float)数据 16
2.3.3 字符型(char)数据 16
2.4 C语言语句 18
2.5 C语言的格式输出printf函数 19
2.5.1 格式控制字符串 19
2.5.2 输出表列 20
2.6 C语言的格式输入scanf函数 22
2.6.1 格式控制字符串 23
2.6.2 分隔符 23
2.7 小结 26
习题2 28
第3章 选择结构 31
3.1 问题的引出 31
3.2 关系运算与逻辑运算 32
3.2.1 关系运算 32
3.2.2 逻辑运算 34
3.3 二路分支的if语句 38
3.3.1 if~else~语句的基本形式 38
3.3.2 if~else~语句示例 38
3.4 单路分支的if语句 40
3.4.1 if~语句的基本形式 40
3.4.2 if~语句示例 40
3.5 多路分支的if语句 43
3.5.1 if~else if~语句的基本形式 43
3.5.2 if~else if~语句示例 43
3.6 if语句的嵌套 45
3.7 switch语句 48
3.7.1 switch语句的基本结构 48
3.7.2 switch语句示例 48
3.8 小结 53
习题3 54
第4章 循环结构 58
4.1 循环结构概述 58
4.2 while循环语句 59
4.2.1 while循环语句概述 59
4.2.2 while语句示例 61
4.3 do~while循环语句 66
4.3.1 do~while循环语句概述 66
4.3.2 do~while语句示例 67
4.4 for循环语句 69
4.4.1 for循环语句基本形式 69
4.4.2 for语句示例 72
4.4.3 三种循环的比较 73
4.5 循环嵌套 74
4.5.1 循环嵌套概述 74
4.5.2 循环嵌套示例 76
4.6 循环的辅助语句 77
4.6.1 break语句 77
4.6.2 continue语句 78
4.7 常用的循环程序设计方法 80
4.7.1 穷举法 81
4.7.2 递推法 82
4.7.3 迭代法 83
4.8 小结 84
习题4 85
第5章 数据类型和表达式 93
5.1 数据的存储格式 94
5.2 基本数据类型 95
5.2.1 整型 96
5.2.2 实型 97
5.2.3 字符型 99
5.3 运算符与表达式 102
5.3.1 算术表达式 102
5.3.2 赋值表达式 103
5.3.3 自增、自减运算符 105
5.3.4 关系表达式 106
5.3.5 逻辑表达式 108
5.3.6 条件表达式 111
5.3.7 逗号表达式 112
5.3.8 位运算 113
5.3.9 其他运算符 115
5.4 类型转换 116
5.4.1 非赋值类型转换 116
5.4.2 赋值类型转换 117
5.4.3 强制类型转换 117
5.5 小结 117
习题5 118
第6章 数组 121
6.1 一维数组 121
6.1.1 引入一维数组 121
6.1.2 一维数组的定义和引用 122
6.1.3 一维数组的存储和初始化 124
6.1.4 一维数组程序设计实例 125
6.2 二维数组 130
6.2.1 引入二维数组 130
6.2.2 二维数组的定义和引用 131
6.2.3 二维数组的存储和初始化 134
6.2.4 二维数组程序设计实例 136
6.3 字符数组与字符串 141
6.3.1 引入字符数组 141
6.3.2 字符数组的定义与初始化 142
6.3.3 字符串 143
6.3.4 字符数组与字符串程序设计实例 146
6.4 小结 149
习题6 150
第7章 函数 156
7.1 函数的概述 156
7.2 函数的简单调用 159
7.2.1 输出数字金字塔 159
7.2.2 判断素数 161
7.2.3 数值交换 163
7.3 数组作为参数的函数调用 165
7.3.1 寻找数组中最大元素 166
7.3.2 比较两个数组的大小 167
7.3.3 字符串复制 168
7.3.4 学生成绩排名 169
7.4 函数的嵌套调用 170
7.4.1 计算最大公约数和最小公倍数 171
7.4.2 计算数组元素的均方差 172
7.5 函数的递归调用 173
7.5.1 计算阶乘 174
7.5.2 汉诺塔问题 176
7.6 变量的作用域 177
7.6.1 局部变量 177
7.6.2 全局变量 179
7.7 变量的存储类型 181
7.8 小结 183
习题7 184
第8章 指针 189
8.1 认识指针 190
8.2 指针变量的声明和初始化 191
8.2.1 指针变量的声明 191
8.2.2 指针变量的初始化 192
8.3 指针变量的使用 193
8.3.1 通过指针访问变量 193
8.3.2 指针变量的地址 195
8.3.3 指针变量的算术运算 196
8.4 指针与数组 197
8.4.1 指针与一维数组 197
8.4.2 指针与字符串 201
8.4.3 指针与二维数组 202
8.5 指针数组 206
8.6 指向指针的指针 208
8.7 指针与函数 210
8.7.1 指针作为函数参数 210
8.7.2 指针作为函数返回值 213
8.7.3 指向函数的指针 213
8.8 小结 216
习题8 217
第9章 结构体 224
9.1 结构体概述 224
9.1.1 结构体类型定义 224
9.1.2 结构体变量定义 225
9.1.3 结构体变量使用 226
9.1.4 结构体嵌套定义 227
9.2 结构体变量作为函数参数 229
9.2.1 输出某学生的信息 229
9.2.2 平面上两点之间的距离 230
9.3 结构体数组 231
9.3.1 结构体数组的定义和初始化 231
9.3.2 计算学生的平均成绩 232
9.3.3 候选人得票统计程序 232
9.4 结构体指针 233
9.4.1 结构体指针概念 233
9.4.2 图书信息输出 234
9.4.3 指向结构体数组的指针 235
9.5 结构体指针作为函数参数 236
9.5.1 输出某学生信息 236
9.5.2 统计学生成绩等级 238
9.6 结构体综合应用实例 239
9.6.1 电话号码簿管理 239
9.6.2 学生成绩管理系统 242
9.7 小结 245
习题9 245
第10章 共用体与枚举 251
10.1 共用体 251
10.1.1 共用体概念 251
10.1.2 人员管理 254
10.2 枚举 255
10.2.1 枚举概念 255
10.2.2 枚举类型的应用 256
10.3 用typedef定义类型 257
10.4 小结 259
习题10 259
第11章 指针的高级应用 263
11.1 动态内存分配 263
11.1.1 动态分配内存函数 263
11.1.2 malloc函数 264
11.1.3 calloc函数 265
11.1.4 realloc函数 265
11.1.5 free函数 265
11.1.6 动态分配内存编程实例 266
11.2 链表 269
11.2.1 链表结点结构 270
11.2.2 建立和输出静态链表 270
11.2.3 建立和输出动态链表 271
11.2.4 删除链表中的结点 273
11.2.5 在链表中插入结点 275
11.2.6 链表的综合应用 277
11.2.7 链表的扩展应用 280
11.3 小结 281
习题11 281
第12章 文件 284
12.1 文件概述 284
12.1.1 将“I am a student!”写入文件 284
12.1.2 文件的概念 285
12.1.3 缓冲文件系统 286
12.1.4 文件结构与文件指针 286
12.2 文件打开与关闭 287
12.2.1 电话号码文件显示 287
12.2.2 打开文件 288
12.2.3 关闭文件 290
12.3 文本文件读/写 290
12.3.1 保存键盘读入字符及输出 290
12.3.2 字符读/写函数fgetc()和fputc() 291
12.3.3 字符串读/写函数fgets()和fputs() 293
12.3.4 格式化文件读/写函数fscanf()和fprintf() 295
12.4 二进制文件读/写 297
12.4.1 程序示例 297
12.4.2 数据块读/写函数fread()和fwrite() 298
12.4.3 文件的随机读写fseek() 298
12.5 其他相关函数 300
12.6 文件程序设计 301
12.6.1 文本文件应用 301
12.6.2 二进制文件应用 302
12.7 常见编程错误 304
12.8 小结 305
习题12 305
第13章 编译预处理 307
13.1 预处理概述 307
13.2 宏定义 307
13.2.1 无参宏定义 308
13.2.2 带参宏定义 310
13.3 文件包含 315
13.4 条件编译 316
13.5 小结 318
习题13 319
附录A C语言运算符 323
附录B ASCII表 324
附录C C语言常用库函数 326
参考文献 329