第1章 C语言程序设计预备知识 1
1.1 计算机系统组成及工作原理简介 1
1.2 进位计数制及其转换 4
1.2.1 十进制数的表示 4
1.2.2 二进制数、八进制数和十六进制数的表示 4
1.2.3 二进制数和十进制数的转换 5
1.2.4 二进制数、八进制数和十六进制数的转换 7
1.3 机器数的表示形式及其表示范围 8
1.3.1 真值与机器数 8
1.3.2 数的原码表示 8
1.3.3 数的反码表示 9
1.3.4 数的补码表示 10
1.3.5 补码的加、减运算 11
1.3.6 无符号整数 11
1.3.7 字符表示法 11
1.4 二进制数的位运算 12
1.5 本章小结 13
习题1 14
第2章 C语言程序设计基础 16
2.1 程序设计语言的发展及其特点 16
2.2 C语言的发展及其特点和应用 18
2.3 C语言与C++、Java和C#之间的关系 20
2.4 C语言程序的基本结构 21
2.5 编制C语言程序的基本步骤 26
2.6 本章小结 28
习题2 29
第3章 基本数据类型、运算符与表达式 31
3.1 C语言的数据类型 32
3.2 常量、变量和标识符 33
3.3 简单数据类型与表示范围 35
3.3.1 整型数据 36
3.3.2 实型数据 42
3.3.3 字符型数据和字符串常量 44
3.3.4 简单数据类型的表示范围 47
3.3.5 数据的简单输出 49
3.4 C语言的运算符与表达式 51
3.4.1 赋值运算符、赋值表达式 51
3.4.2 强制类型转换符 53
3.4.3 算术运算符、算术表达式 55
3.4.4 自增自减运算符、负号运算符 56
3.4.5 算术运算中数据类型转换规则 58
3.4.6 位运算符、位运算表达式 59
3.4.7 逗号运算符、逗号表达式 60
3.4.8 sizeof运算符、复合赋值运算符 61
3.5 运算符的优先级和结合性 62
3.6 有符号数与无符号数之间运算问题 62
3.7 本章小结及常见错误列举 64
习题3 69
第4章 基本输入输出和顺序程序设计 73
4.1 格式化输出printf 73
4.1.1 整数的输出 76
4.1.2 实数的输出 80
4.1.3 字符和字符串的输出 81
4.1.4 格式化输出小结 82
4.2 格式化输入scanf 84
4.3 字符数据的非格式化输入输出 90
4.4 程序的控制结构 93
4.4.1 算法的基本概念 93
4.4.2 算法的描述方法 95
4.4.3 算法的基本结构 97
4.5 顺序程序设计举例 99
4.6 本章小结及常见错误列举 101
习题4 103
第5章 选择结构程序设计 107
5.1 C语言程序中语句的分类 107
5.2 关系运算符、逻辑运算符、条件运算符 109
5.2.1 关系运算符和关系表达式 109
5.2.2 逻辑运算符和逻辑表达式 110
5.2.3 条件运算符和条件表达式 112
5.3 选择结构的程序设计 113
5.3.1 if语句 114
5.3.2 switch语句 118
5.4 选择结构程序设计举例 122
5.5 本章小结及常见错误列举 128
习题5 131
第6章 循环结构程序设计 138
6.1 循环结构的程序设计 138
6.1.1 while语句 139
6.1.2 do-while语句 142
6.1.3 for语句 143
6.1.4 循环嵌套 146
6.1.5 break与continue语句 147
6.1.6 goto语句 149
6.1.7 exit()函数 150
6.2 循环结构类型的选择及转换 151
6.3 循环结构程序设计举例 153
6.4 本章小结及常见错误列举 159
习题6 162
第7章 数组 169
7.1 一维数组 170
7.1.1 一维数组的定义和引用 170
7.1.2 一维数组的赋值 172
7.1.3 一维数组的应用举例 175
7.2 二维数组 181
7.2.1 二维数组的定义和引用 182
7.2.2 二维数组的赋值 183
7.2.3 二维数组的应用举例 185
7.3 字符串与数组 187
7.3.1 字符串的本质 187
7.3.2 字符及字符串操作的常用函数 188
7.3.3 字符串数组 194
7.4 数组综合应用举例 197
7.5 本章小结及常见错误列举 200
习题7 204
第8章 函数 210
8.1 函数概述 210
8.2 函数的定义与调用 212
8.2.1 无参数无返回值的函数 212
8.2.2 无参数有返回值的函数 214
8.2.3 带参数无返回值的函数 217
8.2.4 带参数有返回值的函数 219
8.3 函数参数的传递方式 220
8.4 变量的作用域和生存期 224
8.5 变量的存储类型 229
8.6 函数的嵌套和递归调用 234
8.6.1 函数的嵌套调用 234
8.6.2 函数的递归调用 235
8.7 函数的作用域 241
8.8 函数封装 242
8.9 函数应用综合举例 242
8.10 本章小结及常见错误列举 246
习题8 250
第9章 指针 255
9.1 指针与指针变量的概念 255
9.2 指针变量的定义和引用 257
9.3 指针和地址运算 263
9.4 指针与数组 263
9.4.1 数组的指针和指向数组的指针变量 264
9.4.2 指向多维数组的指针——数组指针 266
9.4.3 元素为指针的数组——指针数组 271
9.5 指针与字符串 274
9.6 指针与动态内存分配 280
9.7 多级指针 285
9.8 指针作为函数参数 288
9.9 指针作为函数的返回值——指针函数 294
9.10 指向函数的指针——函数指针 295
9.11 带参数的main函数 298
9.12 本章小结及常见错误列举 301
习题9 306
第10章 预处理命令 312
10.1 预处理命令简介 312
10.2 宏定义 313
10.2.1 不带参数的宏定义 313
10.2.2 带参数的宏定义 316
10.3 文件包含 317
10.4 条件编译 319
10.5 本章小结及常见错误列举 323
习题10 325
第11章 复杂数据类型 328
11.1 复杂数据类型概述 328
11.2 结构体 329
11.2.1 结构体类型的定义 329
11.2.2 结构体变量的定义和引用 331
11.2.3 结构体变量的赋值 334
11.2.4 结构体变量内存分配问题透析 337
11.2.5 简化结构体类型名 340
11.2.6 结构体数组 341
11.3 线性链表 344
11.4 联合体 350
11.4.1 联合体类型的定义 351
11.4.2 联合体变量的定义和引用 352
11.4.3 联合体变量的赋值 352
11.5 位域 356
11.6 枚举类型变量的定义和引用 358
11.7 复杂数据类型应用综合举例 361
11.8 本章小结及常见错误列举 365
习题11 369
第12章 文件 375
12.1 文件的基本概念 375
12.2 文件的类别 376
12.3 文件操作概述 377
12.4 文件指针 378
12.5 文件的打开、读写和关闭 378
12.5.1 文件的打开与关闭 379
12.5.2 文件的读写 380
12.5.3 文件读写函数选用原则 392
12.6 文件的定位读写 393
12.7 文件应用综合举例 396
12.8 本章小结及常见错误列举 398
习题12 399
附录A 常见问题解答 404
附录B 常用标准库函数 407
附录C C语言的关键字 414
附录D 运算符和结合性 415
附录E ASCII码 416
参考文献 418