第1章 C语言概述 1
1.1 C语言的发展历史与特点 1
1.1.1 C语言的发展历史 1
1.1.2 C语言的特点 2
1.2 程序设计与算法 3
1.2.1 程序设计 3
1.2.2 算法的特征 3
1.2.3 算法设计的原则 3
1.2.4 算法的描述方法 4
1.2.5 算法的时间复杂度和空间复杂度 5
1.3 C语言程序示例 5
1.4 C语言的基本语法元素 7
1.4.1 C语言的基本词法 7
1.4.2 C语言的主要语法单位 8
1.5 C语言程序设计求解问题的步骤 10
1.6 C语言程序的调试方法 11
1.6.1 静态调试 12
1.6.2 动态调试 13
1.7 典型例题 14
1.8 上机实验 15
习题1 15
第2章 数据类型、运算符与表达式 17
2.1 数据类型 17
2.1.1 基本类型 17
2.1.2 其他数据类型 19
2.2 常量 19
2.2.1 整型常量 20
2.2.2 实型常量 20
2.2.3 字符型常量 20
2.2.4 字符串常量 21
2.2.5 符号常量 22
2.3 变量 22
2.3.1 变量的定义 23
2.3.2 变量赋初值 23
2.3.3 整型变量 23
2.3.4 实型变量 24
2.3.5 字符型变量 25
2.4 各种数据类型的转换 25
2.4.1 隐式转换 25
2.4.2 强制转换 26
2.5 运算符和表达式 26
2.5.1 算术运算符与算术表达式 28
2.5.2 关系运算符和关系表达式 30
2.5.3 逻辑运算符和逻辑表达式 31
2.5.4 赋值运算符和赋值表达式 32
2.5.5 逗号运算符和逗号表达式 33
2.5.6 条件运算符和条件表达式 33
2.5.7 位运算符 34
2.6 典型例题 37
2.7 上机实验 38
习题2 39
第3章 顺序结构程序设计 42
3.1 数据输出 42
3.1.1 字符输出函数putchar() 42
3.1.2 格式输出函数printf() 43
3.2 数据输入 46
3.2.1 字符输入函数getchar() 46
3.2.2 格式输入函数scanf() 47
3.3 顺序结构 49
3.4 典型例题 50
3.5 上机实验 52
习题3 53
第4章 分支结构程序设计 56
4.1 if语句 56
4.1.1 if语句的3种基本形式 56
4.1.2 if语句的嵌套 58
4.2 switch语句 59
4.3 典型例题 62
4.4 上机实验 65
习题4 66
第5章 循环结构程序设计 70
5.1 while语句 70
5.2 do-while语句 71
5.3 for语句 73
5.4 循环的嵌套 75
5.5 break和continue语句 76
5.5.1 break语句 76
5.5.2 continue语句 76
5.6 典型例题 77
5.7 上机实验 79
习题5 81
第6章 数组 85
6.1 一维数组 85
6.1.1 一维数组的定义 85
6.1.2 一维数组的初始化 86
6.1.3 一维数组的引用 86
6.2 二维数组 88
6.2.1 二维数组的定义 88
6.2.2 二维数组的初始化 89
6.2.3 二维数组的引用 89
6.3 字符数组与字符串 90
6.3.1 字符数组的定义与初始化 90
6.3.2 字符数组的输入和输出 91
6.3.3 字符串处理函数 93
6.4 典型例题 97
6.5 上机实验 99
习题6 101
第7章 函数 105
7.1 函数定义 105
7.1.1 无参函数 105
7.1.2 有参函数 106
7.2 函数声明 107
7.3 参数的返回与参数传递 108
7.3.1 函数的返回 108
7.3.2 形参与实参 109
7.4 函数调用 110
7.4.1 函数调用的一般形式 110
7.4.2 函数的传值调用 111
7.4.3 按地址传送方式传递数据 112
7.5 函数的嵌套与递归调用 113
7.5.1 函数的嵌套调用 113
7.5.2 函数的递归调用 114
7.6 数组与函数参数 115
7.6.1 数组元素作为函数实参 115
7.6.2 数组名作为函数参数 115
7.6.3 多维数组名作为函数参数 116
7.7 变量的作用域 117
7.7.1 局部变量 117
7.7.2 全局变量 118
7.8 变量的存储类型 119
7.8.1 自动变量 120
7.8.2 静态变量 121
7.8.3 寄存器变量 123
7.8.4 外部变量 123
7.9 内部函数与外部函数 125
7.9.1 内部函数 125
7.9.2 外部函数 125
7.10 典型例题 126
7.11 上机实验 129
习题7 131
第8章 指针 136
8.1 指针与指针变量 136
8.1.1 地址与指针的概念 136
8.1.2 指针变量 137
8.1.3 指针运算 138
8.1.4 二级指针 139
8.2 指针与数组 140
8.2.1 指向一维数组的指针 140
8.2.2 指向多维数组的指针 141
8.2.3 指向字符串的指针 143
8.2.4 指针数组 144
8.3 指针与函数 145
8.3.1 指针变量作为函数参数 146
8.3.2 指向函数的指针 147
8.3.3 返回值为指针的函数 149
8.4 带参数的主函数 150
8.5 用指针实现内存动态分配 151
8.6 典型例题 152
8.7 上机实验 156
习题8 158
第9章 结构体与共用体 163
9.1 结构体类型 163
9.1.1 结构体类型定义 163
9.1.2 结构体类型变量的定义 164
9.1.3 结构体变量的引用 165
9.1.4 结构体变量的初始化 166
9.1.5 结构体变量的赋值 166
9.2 结构体数组 167
9.2.1 结构体数组的定义 167
9.2.2 结构体数组的初始化 167
9.3 结构体和指针 168
9.3.1 指向结构体变量的指针 168
9.3.2 指向结构体数组的指针 169
9.4 结构体和函数 170
9.4.1 结构体变量作为函数参数 170
9.4.2 指向结构体变量的指针作为函数参数 170
9.4.3 返回结构体数据的函数 171
9.4.4 返回结构体指针的函数 172
9.5 共用体 172
9.5.1 共用体类型的定义 172
9.5.2 共用体类型变量的定义 173
9.5.3 共用体变量的引用 173
9.6 枚举类型 174
9.6.1 枚举类型的定义 174
9.6.2 枚举变量的定义 174
9.6.3 枚举变量的使用 175
9.7 用typedef定义类型 176
9.8 单链表 176
9.9 典型例题 180
9.10 上机实验 182
习题9 184
第10章 编译预处理 190
10.1 宏定义 190
10.1.1 不带参数的宏定义 190
10.1.2 带参数的宏定义 192
10.1.3 终止宏定义 193
10.2 文件包含 193
10.3 条件编译 194
10.4 典型例题 197
10.5 上机实验 198
习题10 199
第11章 文件 201
11.1 文件的基本概念 201
11.1.1 文件与文件名 201
11.1.2 文件的分类 201
11.1.3 文件指针 202
11.1.4 ANSIC的缓冲文件系统 203
11.2 文件的打开与关闭 203
11.2.1 文件打开函数fopen() 203
11.2.2 文件关闭函数fclose() 204
11.3 文件的读写操作 204
11.3.1 字符读写函数fgetc()和fputc() 204
11.3.2 字符串读写函数fgets()和fputs() 206
11.3.3 数据块读写函数fread()和fwrite() 207
11.3.4 格式化读写函数fscanf()和fprintf() 208
11.4 文件检测函数 209
11.4.1 文件结束检测函数feof() 209
11.4.2 读写文件出错检测函数ferror() 210
11.4.3 文件出错标志和文件结束标志置0函数clearerr() 210
11.5 位置指针与文件定位 211
11.5.1 位置指针复位函数rewind() 212
11.5.2 随机读写函数fseek() 212
11.5.3 返回文件当前位置函数ftell() 213
11.6 典型例题 214
11.7 上机实验 217
习题11 218
第12章 常用算法与C程序设计举例 222
12.1 常用算法 222
12.1.1 二分法 222
12.1.2 迭代法 223
12.1.3 穷举法 224
12.1.4 递推法 224
12.1.5 递归法 225
12.1.6 回溯法 226
12.2 C程序设计举例 227
12.2.1 学生成绩管理系统 227
12.2.2 通讯录管理系统 234
附录 239
附录A 常用字符与ASCⅡ代码对照表 239
附录B C语言常用库函数 240
参考文献 243