第1章 绪论 1
1.1 计算机系统概述 1
1.1.1 计算机系统的功能 1
1.1.2 计算机系统的组成 2
1.1.3 计算机系统的工作原理 7
1.2 数据及其计算机内部表示 8
1.2.1 与数据相关的概念和术语 8
1.2.2 二进制表示法 9
1.2.3 文本数据表示法 9
1.2.4 数值数据表示法 10
1.2.5 音频数据表示法 13
1.2.6 图形和图像数据表示法 13
1.2.7 视频数据表示法 14
1.2.8 数据及其表示小结 14
1.3 问题求解与算法 15
1.3.1 问题求解 15
1.3.2 算法及其特点 15
1.3.3 算法优劣的标准 16
1.3.4 算法描述 16
1.4 程序设计语言与程序设计 20
1.4.1 程序设计语言的发展史 21
1.4.2 程序设计必备知识 24
1.4.3 结构化程序设计方法 24
1.4.4 程序质量 26
1.5 计算机问题求解的过程 26
1.5.1 算法开发 27
1.5.2 算法实现 27
习题1 27
第2章 C语言概述 29
2.1 C语言程序的组成及特点 29
2.2 C语言程序上机指导 30
2.3 C程序的调试 32
习题2 35
第3章 基本数据类型与数据运算 36
3.1 基本标识符 36
3.1.1 保留关键字 36
3.1.2 预定义标识符 37
3.1.3 用户自定义标识符 37
3.2 数据类型 37
3.3 常量与变量 39
3.3.1 常量 39
3.3.2 变量 43
3.4 基本数据类型的转换 45
3.4.1 自动类型转换 46
3.4.2 强制类型转换 46
3.5 运算符和表达式 47
3.5.1 运算符和表达式概述 47
3.5.2 算术运算符与算术表达式 48
3.5.3 赋值运算符与赋值表达式 50
3.5.4 关系运算符与关系表达式 52
3.5.5 逻辑运算符与逻辑表达式 52
3.5.6 条件运算符与条件表达式 54
3.5.7 逗号运算符与逗号表达式 54
3.5.8 位运算符与位运算表达式 55
3.5.9 取长度运算符 59
3.5.10 运算符的优先级和结合性 60
3.6 应用举例 61
习题3 63
第4章 常用库函数 66
4.1 输出函数 66
4.1.1 printf函数 66
4.1.2 putchar函数 69
4.1.3 puts函数 70
4.2 输入函数 70
4.2.1 scanf函数 70
4.2.2 getchar函数 72
4.2.3 gets函数 72
4.3 字符串函数 73
4.3.1 strcat函数 73
4.3.2 strcpy函数 73
4.3.3 strcmp函数 73
4.3.4 strlen函数 74
4.3.5 strlwr函数 74
4.3.6 strupr函数 74
4.4 数学函数 75
4.5 应用举例 77
习题4 78
第5章 C程序结构及控制语句 81
5.1 C程序语句及编程风格 81
5.1.1 C程序语句 81
5.1.2 编程风格 83
5.2 顺序结构 84
5.3 选择结构 85
5.3.1 if语句 85
5.3.2 switch语句 90
5.3.3 选择程序举例 92
5.4 循环结构 94
5.4.1 while语句 95
5.4.2 do-while语句 95
5.4.3 for语句 96
5.4.4 跳转语句 99
5.4.5 循环的嵌套 101
5.4.6 循环程序举例 103
5.5 应用举例 105
习题5 108
第6章 数组 111
6.1 数组的定义和存储结构 111
6.1.1 数组的定义 111
6.1.2 数组的存储结构 112
6.2 一维数组 113
6.2.1 一维数组的定义 113
6.2.2 一维数组元素的引用 113
6.2.3 一维数组的初始化 114
6.2.4 一维数组程序举例 114
6.3 二维数组 119
6.3.1 二维数组的定义 119
6.3.2 二维数组元素的引用 119
6.3.3 二维数组的初始化 119
6.3.4 二维数组程序举例 120
6.4 字符串与字符数组 121
6.4.1 字符串 121
6.4.2 字符数组 122
6.4.3 字符串与字符数组程序举例 125
6.5 应用举例 127
习题6 129
第7章 函数 131
7.1 引言 131
7.2 函数的定义 132
7.3 函数的调用 134
7.3.1 函数调用 134
7.3.2 函数的参数 135
7.3.3 函数的返回值 136
7.3.4 函数的声明 137
7.4 嵌套与递归 139
7.4.1 函数的嵌套调用 139
7.4.2 函数的递归调用 141
7.5 数组作为函数参数 145
7.5.1 数组元素作为函数参数 145
7.5.2 数组名作为函数参数 146
7.5.3 多维数组名作为函数参数 148
7.6 变量的作用域与生存期 149
7.6.1 变量的作用域 149
7.6.2 变量的生存期 152
7.7 内部函数与外部函数 157
7.7.1 内部函数 157
7.7.2 外部函数 158
7.8 应用举例 158
习题7 165
第8章 预处理命令 170
8.1 宏定义 170
8.1.1 无参数宏 170
8.1.2 带参数的宏 173
8.2 文件包含 175
8.3 条件编译 176
8.3.1 条件编译的格式 176
8.3.2 使用条件编译的优点 177
习题8 179
第9章 指针 180
9.1 引言 180
9.2 指针与指针变量 181
9.2.1 指针的概念 181
9.2.2 指针变量的定义及引用 182
9.2.3 指针变量作为函数参数 186
9.2.4 指向指针的指针 189
9.2.5 指针的运算 190
9.2.6 void指针类型 191
9.3 指针与数组 192
9.3.1 数组的指针 192
9.3.2 指向数组元素的指针 193
9.3.3 指向数组的指针 195
9.3.4 数组指针作参数 197
9.4 指针与字符串 201
9.4.1 字符串的字符指针表示形式 201
9.4.2 利用字符指针访问字符串 202
9.4.3 字符数组与字符指针的比较 204
9.4.4 字符指针作函数参数 205
9.5 指针数组 207
9.5.1 一维指针数组的定义及使用 207
9.5.2 指针数组作main函数的形参 208
9.6 指针与函数 209
9.6.1 返回指针值的函数 209
9.6.2 指向函数的指针 212
9.6.3 函数指针作为函数的参数 214
9.6.4 函数指针数组 215
9.7 应用举例 217
习题9 221
第10章 结构体与共用体 224
10.1 结构体 224
10.1.1 结构体类型的定义 224
10.1.2 结构体变量的定义、引用和初始化 225
10.1.3 结构体程序举例 227
10.2 链表 232
10.2.1 链表概述 232
10.2.2 静态链表 233
10.2.3 动态链表 234
10.3 共用体 241
10.3.1 共用体的概念 241
10.3.2 共用体的定义 241
10.3.3 共用体变量的引用 242
10.3.4 共用体应用举例 243
10.4 枚举类型 243
10.4.1 枚举的概念 243
10.4.2 枚举的定义 244
10.4.3 枚举变量 245
10.4.4 枚举应用举例 245
10.5 应用举例 246
习题10 250
第11章 文件 252
11.1 文件概述 252
11.2 文件指针 253
11.3 文件的打开与关闭 253
11.3.1 文件的打开 254
11.3.2 文件的关闭 255
11.4 文件的读/写 255
11.4.1 字符读/写函数 255
11.4.2 字符串读/写函数 257
11.4.3 字读/写函数 257
11.4.4 数据块读/写函数 258
11.4.5 格式化读/写函数 259
11.5 文件的定位 261
11.5.1 重返文件头函数 261
11.5.2 指针位置移动函数 262
11.5.3 取指针当前位置函数 263
11.6 出错的检测 264
11.7 应用举例 265
习题11 269
第12章 应用案例——学生宿舍卫生管理系统 271
12.1 需求陈述 271
12.2 需求分析 271
12.2.1 功能需求 271
12.2.2 数据需求 272
12.2.3 技术约束 272
12.3 总体设计 272
12.3.1 系统总体结构 272
12.3.2 全局数据结构 273
12.3.3 界面设计 273
12.4 详细设计 279
12.4.1 系统主函数 280
12.4.2 管理员部分 280
12.4.3 普通用户部分 287
12.5 完整的代码实现与分析 287
附录A 常用字符与ASCII码对照表 314
附录B C语言ANSI/ISO标准库函数 316
附录C 实验 321
参考文献 328