第1章 概述 1
1.1 什么是程序 2
1.2 程序设计语言 2
1.2.1 机器语言 3
1.2.2 汇编语言 3
1.2.3 高级语言 3
1.3 C语言程序 4
1.3.1 注释 5
1.3.2 关键字 6
1.3.3 预处理命令 6
1.3.4 函数 6
1.3.5 语句 7
1.4 编写和运行C程序 8
习题 12
第2章 数据类型 14
2.1 变量 16
2.1.1 整型变量 17
2.1.2 实型变量 18
2.1.3 字符变量 19
2.2 常量 20
2.2.1 整型常量 20
2.2.2 浮点型常量 20
2.2.3 字符常量 21
2.2.4 字符串常量 22
2.3 变量初始化 23
习题 24
第3章 数据的使用 26
3.1 应用实例 27
3.2 输入与输出 28
3.2.1 字符输出——putchar函数 29
3.2.2 字符输入——getchar函数 29
3.2.3 格式化输出——printf函数 30
3.2.4 格式化输入——scanf函数 36
3.3 运算符和表达式 42
3.3.1 算术运算符 43
3.3.2 运算符的优先级和结合性 43
3.3.3 赋值运算符 45
3.3.4 自增、自减运算符 46
3.3.5 逗号运算符 48
3.3.6 sizeof运算符 49
3.3.7 表达式语句 50
3.4 数据类型转换 51
3.4.1 数据类型的隐式转换 51
3.4.2 强制类型转换运算符 55
习题 56
第4章 控制结构 60
4.1 关系运算符和关系表达式 61
4.1.1 关系运算符 61
4.1.2 关系表达式 62
4.2 逻辑运算符和逻辑表达式 62
4.2.1 逻辑运算符 62
4.2.2 逻辑表达式 63
4.3 选择结构 64
4.3.1 if语句 64
4.3.2 else子句 66
4.3.3 if语句嵌套 67
4.3.4 使用if语句应注意的问题 69
4.3.5 条件运算符和条件表达式 72
4.3.6 switch语句 73
4.3.7 break语句 75
4.3.8 应用实例 76
4.4 循环结构 78
4.4.1 while语句 78
4.4.2 do while语句 79
4.4.3 for语句 82
4.4.4 使用break语句 85
4.4.5 使用continue语句 86
4.4.6 循环语句嵌套 86
4.4.7 应用实例 88
习题 91
第5章 函数 94
5.1 什么是函数 95
5.2 函数的定义和调用 95
5.2.1 计算两个实数的平均值 95
5.2.2 显示提示信息 96
5.2.3 函数的定义 97
5.2.4 return语句 98
5.2.5 函数的调用 98
5.3 函数的声明 99
5.4 函数的参数传递 101
5.5 递归 103
5.5.1 函数的递归调用 103
5.5.2 递归的思想 104
5.5.3 递归的使用 105
5.5.4 求解汉诺塔问题的C程序 106
5.6 局部变量与全局变量 107
5.6.1 程序块 107
5.6.2 局部变量 108
5.6.3 全局变量 109
5.6.4 作用域规则 110
5.7 变量的存储类别 111
5.7.1 变量的性质 112
5.7.2 auto存储类别 112
5.7.3 register存储类别 113
5.7.4 static存储类别 113
5.7.5 extern存储类别 115
习题 117
第6章 数组 123
6.1 数组的引入 124
6.2 一维数组 125
6.2.1 一维数组定义 125
6.2.2 一维数组的元素引用 126
6.2.3 对数组使用sizeof运算符 127
6.2.4 一维数组的初始化 128
6.2.5 一维数组的排序 129
6.3 字符数组与字符串 135
6.3.1 字符数组 135
6.3.2 字符串 135
6.3.3 字符串的输入/输出 136
6.4 二维数组和多维数组 138
6.4.1 二维数组的定义 138
6.4.2 二维数组的元素引用 139
6.4.3 二维数组初始化 139
6.4.4 二维数组使用举例 140
6.5 应用实例 140
习题 143
第7章 指针 147
7.1 基本概念 148
7.1.1 指针和地址 148
7.1.2 定义指针变量 148
7.1.3 指针的基本运算 150
7.2 指针作为函数参数 152
7.3 指针与数组 156
7.3.1 一维数组与指针 156
7.3.2 指针的算术运算 159
7.3.3 用指针操作数组 162
7.3.4 一维数组(名)作为函数参数 165
7.3.5 二(多)维数组和指针 167
7.3.6 二维数组(名)作为函数参数 171
7.4 指针与字符串 172
7.4.1 用指针操作字符串 172
7.4.2 常用字符串处理函数 174
7.5 指针数组和指向指针的指针 178
7.5.1 指针数组 178
7.5.2 指向指针的指针 182
7.6 指向函数的指针和返回指针的函数 184
7.6.1 指向函数的指针 184
7.6.2 返回指针的函数 185
7.7 应用实例 186
习题 188
第8章 预处理指令 194
8.1 宏替换 195
8.1.1 简单宏替换 195
8.1.2 带参数的宏替换 196
8.2 文件包含 200
8.3 条件编译 202
8.3.1 #ifdef指令 202
8.3.2 #ifndef指令 204
8.3.3 #if指令 206
习题 207
第9章 结构体与共用体 209
9.1 结构体 210
9.1.1 结构体类型的定义 210
9.1.2 结构体变量的定义 211
9.1.3 结构体变量的使用 213
9.2 结构体数组 214
9.2.1 结构体数组的定义 214
9.2.2 结构体数组的初始化 216
9.3 结构体类型指针 217
9.3.1 指向结构体变量的指针 218
9.3.2 指向结构体数组的指针 219
9.4 结构体与函数 221
9.4.1 结构体变量的成员作函数实参 221
9.4.2 结构体变量作函数参数 222
9.4.3 指向结构体的指针作函数参数 224
9.5 链表 225
9.5.1 静态链表 226
9.5.2 动态链表 227
9.6 共用体 238
9.6.1 共用体变量的定义 238
9.6.2 共用体变量的使用 240
习题 242
第10章 文件 247
10.1 文件概述 248
10.1.1 数据文件的存储形式 248
10.1.2 文件类型指针 249
10.2 文件的打开与关闭 249
10.2.1 文件打开函数fopen 249
10.2.2 文件关闭函数fclose 250
10.3 文件读/写函数 251
10.3.1 文件读函数fgetc 251
10.3.2 文件写函数fputc 252
10.3.3 文件读函数fgets 253
10.3.4 文件写函数fputs 253
10.3.5 文件读函数fread 254
10.3.6 文件写函数fwrite 255
10.3.7 文件读函数fscanf 256
10.3.8 文件写函数fprintf 257
10.4 文件定位 257
10.4.1 rewind函数 258
10.4.2 fseek函数 258
10.5 其他常用函数 260
10.5.1 feof函数 260
10.5.2 ferror函数 260
10.5.3 clearerr函数 261
习题 262
附录一 习题参考答案 265
附录二 ASCII字符集 283
附录三 运算符及其优先级表 286
附录四 常用库函数 287
附录五 全国计算机等级考试二级C语言程序设计考试大纲 293
主要参考文献 296