第1章 计算机和C编程入门 1
1.1 计算机系统 2
1.1.1 硬件 2
1.1.2 软件 4
1.1.3 高级语言 5
1.1.4 编译器 5
1.1.5 历史回顾 7
1.2 编程和问题求解 7
1.2.1 算法 7
1.2.2 程序设计 8
1.2.3 软件生存期 10
1.3 C编程入门 10
1.3.1 准备编程 10
1.3.2 一个C示范程序 10
1.3.3 变量、表达式和赋值 13
1.3.4 初始化 16
1.3.5 include及其用法 16
1.3.6 printf()和scanf()简介 17
1.3.7 while语句 18
1.3.8 问题求解 19
1.3.9 编码风格 20
1.3.10 常见的编程错误 21
1.4 测试和调试 21
1.4.1 程序错误类型 21
1.4.2 陷阱:错误地假定程序正确 22
1.5 程序设计学习方法 22
1.6 Visual C++集成开发环境 24
1.6.1 Visual C++可视化集成开发环境 24
1.6.2 Visual C++有关联机帮助 28
1.7 C语言的起源 29
本章小结 29
课后习题 30
第2章 C语言程序设计初步 33
2.1 C语言的字符集、关键字和标识符 34
2.1.1 C语言的字符集 34
2.1.2 C语言的关键字 34
2.1.3 C语言的标识符 35
2.2 数据类型 36
2.3 常量和变量 37
2.3.1 常量 37
2.3.2 变量 41
2.4 运算符与表达式 45
2.4.1 算术运算符与算术表达式 46
2.4.2 赋值运算符与赋值表达式 47
2.5 类型转换 48
2.5.1 赋值转换 49
2.5.2 算术运算时的自动类型转换 49
2.5.3 强制转换 49
2.6 输入输出函数 50
2.6.1 字符型数据的输入输出函数 51
2.6.2 格式化输出函数printf() 52
2.6.3 格式化输入函数scanf() 54
本章小结 56
课后习题 57
第3章 C程序控制结构 59
3.1 C语句概述 60
3.1.1 简单语句 60
3.1.2 复合语句 61
3.1.3 流程控制语句 61
3.2 顺序结构 62
3.2.1 三种基本的结构 62
3.2.2 顺序结构 62
3.3 选择结构语句 64
3.3.1 关系运算符与关系表达式 64
3.3.2 逻辑运算符与逻辑表达式 65
3.3.3 if语句 66
3.3.4 条件运算符和条件表达式 73
3.3.5 switch语句 73
3.4 循环结构的流程控制 78
3.4.1 自增自减运算符 78
3.4.2 while语句 80
3.4.3 do while语句 81
3.4.4 for语句 82
3.4.5 三种循环的比较 86
3.5 循环的嵌套 87
3.6 辅助控制语句 89
3.6.1 break语句 89
3.6.2 continue语句 91
3.7 循环结构程序举例 92
本章小结 96
课后习题 97
第4章 数组 100
4.1 一维数组 101
4.1.1 一维数组的定义 101
4.1.2 一维数组元素的引用 102
4.1.3 一维数组的初始化 104
4.1.4 一维数组程序举例 104
4.2 二维数组 108
4.2.1 二维数组的定义 108
4.2.2 二维数组元素的引用 109
4.2.3 二维数组的初始化 110
4.2.4 二维数组程序举例 112
4.3 字符数组 114
4.3.1 字符数组的定义 114
4.3.2 字符数组的初始化 114
4.3.3 字符数组的引用 115
4.3.4 字符串和字符串结束标志 115
4.3.5 字符数组的输入输出 116
4.3.6 字符串处理函数 117
4.3.7 程序举例 121
本章小结 123
课后习题 124
第5章 函数 127
5.1 函数概述 128
5.2 函数的分类 129
5.3 函数的定义和调用 130
5.3.1 函数的定义 130
5.3.2 函数的调用 131
5.4 函数的返回值 134
5.5 函数的参数及参数的传递 135
5.5.1 函数的参数 135
5.5.2 参数的传递方式 135
5.6 函数的嵌套与递归调用 139
5.6.1 函数的嵌套调用 139
5.6.2 函数的递归调用 140
5.7 变量的作用域和存储类型 141
5.7.1 变量的作用域 142
5.7.2 变量的存储类型 145
5.8 综合实例 148
本章小结 153
课后习题 154
第6章 指针 158
6.1 地址与指针的基本概念 159
6.2 指针变量的定义及初始化 160
6.2.1 指针变量的定义 160
6.2.2 指针变量的初始化 160
6.3 指针运算符 161
6.4 指针变量的运算 163
6.4.1 给指针变量赋值 163
6.4.2 指针变量的加减及关系运算 165
6.5 指针与函数参数 166
6.6 数组和指针 169
6.6.1 指向数组元素的指针 169
6.6.2 通过指针引用数组元素 170
6.6.3 数组名和指针变量作函数参数 173
6.6.4 指针与二维数组 175
6.7 字符串的指针和指向字符串的指针变量 176
6.8 函数指针变量与返回指针值的函数 180
6.8.1 函数指针变量 180
6.8.2 返回指针值的函数 181
6.9 指针数组和多级指针 182
6.9.1 指针数组的概念 182
6.9.2 多级指针 184
本章小结 185
课后习题 185
第7章 复杂数据类型 188
7.1 结构体 189
7.1.1 结构体类型的定义 189
7.1.2 结构体变量的定义 190
7.1.3 结构体变量成员的表示方法 192
7.1.4 结构体变量的赋值 192
7.1.5 结构体变量的初始化 193
7.1.6 结构体数组 193
7.1.7 结构体指针 195
7.2 共用体 198
7.2.1 共用体类型的定义 198
7.2.2 共用体变量的定义 199
7.2.3 共用体变量的引用 199
7.3 枚举 201
7.3.1 枚举类型的定义 201
7.3.2 枚举变量的定义 201
7.3.3 枚举类型变量的赋值和使用 202
7.4 类型定义符typedef 203
本章小结 204
课后习题 205
第8章 文件 208
8.1 C文件概述 209
8.2 文件指针 210
8.3 文件的打开与关闭 212
8.3.1 文件的打(fopen函数) 212
8.3.2 文件的关闭(fclose函数) 214
8.4 文件的读写操作 214
8.4.1 字符读写函数fgetc和fputc 214
8.4.2 字符串读写函数fgets和fputs 217
8.4.3 数据块读写函数fread和fwrite 218
8.4.4 格式化读写函数fscanf和fprintf 219
8.5 文件的随机读写 221
8.5.1 文件定位 221
8.5.2 文件的随机读写 222
8.6 文件检测函数 223
8.7 C库文件 224
本章小结 225
课后习题 225
第9章 预编译和位运算 228
9.1 宏定义 229
9.1.1 不带参数宏定义 229
9.1.2 带参数宏定义 231
9.2 文件包含 232
9.3 条件编译 234
9.3.1 #ifdef命令 234
9.3.2 #ifndef命令 235
9.3.3 #if指令 235
9.4 位运算 236
9.4.1 位运算符 236
9.4.2 位域(位段) 239
本章小结 242
课后习题 242
附录 245
附录Ⅰ ASCII码表 245
附录Ⅱ C语言关键字 246
附录Ⅲ C语言运算符的优先级和结合性 246
附录Ⅳ 常用库函数 247
附录Ⅴ printf函数和scanf函数的具体使用说明 251
参考文献 254