第1章 C语言与程序设计 1
1.1 程序与程序设计 1
1.1.1 程序 2
1.1.2 算法与数据结构 2
1.1.3 程序设计 4
1.1.4 程序设计语言 4
1.1.5 程序设计方法 4
1.2 C语言概述 5
1.2.1 C语言简史 5
1.2.2 C语言的特点 5
1.2.3 C语言程序结构 6
1.2.4 C语言编程风格 9
1.2.5 C程序设计思维 10
1.2.6 C程序的实现流程 11
1.3 上机环境 12
1.3.1 Turbo C 2.0开发环境 12
1.3.2 Microsoft Visual C++ 6.0集成开发环境 14
1.4 案例:高速公路收费站应用程序界面设计 16
1.5 初学者常见问题 17
本章小结 18
实验1 19
习题1 19
第2章 顺序结构程序设计 21
2.1 数据类型 21
2.1.1 标识符 22
2.1.2 常量与变量 22
2.1.3 数据类型转换 26
2.2 运算符与表达式 27
2.2.1 算术运算符和算术表达式 28
2.2.2 赋值运算符和赋值表达式 30
2.2.3 逗号运算符和逗号表达式 32
2.2.4 运算符优先级和结合性 33
2.3 基本语句 34
2.4 数据输入输出 36
2.4.1 字符数据输入输出 36
2.4.2 格式输入与输出 38
2.5 案例:实现两个变量的数据交换 43
2.6 常见错误 44
本章小结 45
实验2 45
习题2 47
第3章 选择结构程序设计 50
3.1 关系运算符和表达式 50
3.1.1 关系运算符及其优先级 50
3.1.2 关系表达式 51
3.2 逻辑运算符和表达式 52
3.2.1 逻辑运算符及其优先级 52
3.2.2 逻辑表达式 52
3.2.3 逻辑运算表达式的值 52
3.3 if语句 54
3.3.1 if语句的3种形式 54
3.3.2 if语句的嵌套 57
3.3.3 条件运算符和条件表达式 58
3.4 switch语句 60
3.5 案例:利用BMI公式计算是否超重 61
3.6 常见错误 62
本章小结 62
实验3 63
习题3 65
第4章 循环结构程序设计 67
4.1 循环结构程序概述 67
4.2 goto语句 67
4.3 while语句 68
4.4 do-while语句 69
4.5 for语句 71
4.6 循环的嵌套 74
4.7 几种循环的比较 77
4.8 break和continue语句 77
4.8.1 break语句 78
4.8.2 continue语句 78
4.9 案例:判定素数 79
4.10 常见错误 81
本章小结 81
实验4 82
习题4 83
第5章 数组 87
5.1 概述 87
5.2 一维数组 88
5.2.1 一维数组的定义 88
5.2.2 一维数组在内存中的存储 90
5.2.3 一维数组的引用 91
5.2.4 一维数组的初始化 94
5.2.5 一维数组程序举例 96
5.3 二维数组 100
5.3.1 二维数组的定义 100
5.3.2 二维数组的理解 100
5.3.3 二维数组在内存中的存储 101
5.3.4 二维数组的引用 101
5.3.5 二维数组的初始化 102
5.3.6 二维数组程序举例 104
5.4 字符串和字符数组 107
5.4.1 字符数组的定义 107
5.4.2 字符数组的初始化 107
5.4.3 字符数组的引用 108
5.4.4 字符串 109
5.4.5 字符串的输入输出 111
5.4.6 常用字符串处理函数 113
5.4.7 字符数组程序举例 118
5.5 案例:模拟实现计算器中的进制转换 120
5.6 常见错误 121
本章小结 123
实验5 125
习题5 125
第6章 函数 130
6.1 概述 130
6.2 函数的定义 133
6.2.1 无参函数定义的一般形式 133
6.2.2 有参函数的一般形式 133
6.3 函数的调用 135
6.3.1 调用的一般形式与方式 135
6.3.2 参数传递和函数的返回值 136
6.3.3 对被调用函数的声明 140
6.4 函数的嵌套与递归 142
6.4.1 函数的嵌套调用 142
6.4.2 函数的递归调用 143
6.5 数组作函数参数 145
6.5.1 数组元素作函数参数 145
6.5.2 数组名作函数参数 146
6.6 局部变量和全局变量 153
6.6.1 局部变量 153
6.6.2 全局变量 155
6.7 变量的存储类别 158
6.8 案例:寻找黑色星期五 162
6.9 常见错误 164
本章小结 165
实验6 166
习题6 168
第7章 指针 173
7.1 基本概念 173
7.1.1 内存地址 173
7.1.2 变量地址 174
7.1.3 存取变量值 174
7.2 指针变量的定义与引用 175
7.2.1 指针变量的定义 175
7.2.2 指针变量的初始化与引用 176
7.2.3 指针运算 179
7.2.4 空指针和void型指针 182
7.2.5 二级指针 183
7.3 指针与数组 184
7.3.1 指针与一维数组 185
7.3.2 通过指针引用数组元素 185
7.3.3 数组名作函数参数 187
7.3.4 指针与二维数组 188
7.4 指针与字符串 192
7.4.1 指针处理字符串 192
7.4.2 字符串的指针作函数参数 194
7.5 指针与函数 195
7.5.1 指向函数的指针变量 195
7.5.2 指针变量作函数参数 196
7.5.3 指针型函数 198
7.6 指针数组和main函数的参数 200
7.6.1 指针数组 200
7.6.2 指针数组作函数参数 202
7.7 案例:统计学生成绩 204
7.8 常见错误 207
本章小结 207
实验7 208
习题7 209
第8章 结构体、共用体与枚举 213
8.1 结构体 213
8.1.1 结构体类型的定义 213
8.1.2 结构体类型变量 215
8.2 结构体数组 221
8.3 结构体与指针 222
8.3.1 指向结构变量的指针 222
8.3.2 指向结构数组的指针 224
8.3.3 结构体指针变量作函数参数 226
8.4 链表 228
8.4.1 动态存储分配 228
8.4.2 链表的概念 231
8.4.3 链表的基本操作 233
8.5 共用体 239
8.5.1 共用体定义 239
8.5.2 共用体与结构体的嵌套使用 240
8.6 枚举类型 241
8.6.1 枚举类型的定义和枚举变量的说明 242
8.6.2 枚举类型变量的赋值和使用 242
8.7 类型定义符typedef 244
8.8 案例:选票统计 245
8.9 常见错误 246
本章小结 246
实验8 247
习题8 248
第9章 编译预处理 253
9.1 预处理概述 253
9.2 宏定义 254
9.2.1 无参宏定义 254
9.2.2 有参宏定义 256
9.2.3 宏嵌套 258
9.3 文件包含与条件编译 259
9.3.1 文件包含 259
9.3.2 条件编译 261
9.4 案例:系统可移植性处理 262
9.5 常见错误 263
本章小结 264
实验9 265
习题9 265
第10章 文件 268
10.1 文件概述 268
10.1.1 文件概念 268
10.1.2 文件类型 269
10.1.3 文件指针 270
10.1.4 文件的打开和关闭 271
10.1.5 文件的操作顺序 273
10.2 文件的读写操作 274
10.2.1 字符读写函数fgetc()和fputc() 274
10.2.2 字符串读写函数fgets()和fputs() 276
10.2.3 数据块读写函数fread()和fwrite() 277
10.2.4 格式化读写函数fscanf()和fprintf() 278
10.3 文件的定位 279
10.3.1 文件指针位置定位函数fseek() 279
10.3.2 文件指针位置复位函数rewind() 280
10.3.3 文件指针位置查询函数ftell() 280
10.4 文件检测函数 281
10.4.1 文件结束检测函数feof() 281
10.4.2 文件出错检测函数ferror() 281
10.4.3 文件出错标志和文件结束标志置0函数clearerr() 282
10.5 案例:文件操作的综合应用 282
10.6 常见错误 287
本章小结 288
实验10 289
习题10 290
第11章 C语言课程设计 294
11.1 课程设计说明 294
11.1.1 课程设计的任务、性质与目的 294
11.1.2 课程设计的基本要求 294
11.1.3 完成课程设计应提交的文档 295
11.2 课程设计案例:通讯录管理系统 295
11.2.1 设计方法一:用函数实现 296
11.2.2 设计方法二:用结构体实现 304
11.2.3 设计方法三:用文件实现 313
11.3 课程设计项目 323
11.3.1 项目一:工资管理系统 323
11.3.2 项目二:贪吃蛇 323
11.3.3 项目三:N皇后问题 324
11.3.4 项目四:其他题目 325
附录A C语言关键字 327
附录B 运算符的优先级和结合性 328
附录C C语言常用函数 330
附录D C语言常见编译错误 339
附录E 实验报告参考格式 351
E1 实验报告要求 351
E2 实验报告样例 352
附录F 习题参考答案 355
参考文献 361