第1章 C语言简介及基础 1
1.1 第一个C语言程序 1
1.2 什么是程序 1
1.3 程序算法及流程图 2
1.4 程序设计语言的发展历程 4
1.5 C语言发展历程 6
1.6 C语言特点 7
1.7 C语言程序的简单结构 8
1.8 C程序编译原理 10
1.9 C语言开发环境 11
1.9.1 Visual C++ 6.0的安装及界面 11
1.9.2 使用Visual C++ 6.0编辑和运行程序 12
1.9.3 使用Visual C++ 6.0开发程序 16
1.9.4 在Visual C++ 6.0下调试程序 16
小结 20
作业 20
第2章 变量、数据类型和运算符 21
2.1 变量、数据类型和运算符应用的必要性 21
2.2 常量 22
2.3 变量 22
2.3.1 变量的概念 22
2.3.2 变量的定义与初始化 23
2.4 基本数据类型 24
2.4.1 整型 24
2.4.2 实型 26
2.4.3 字符型 27
2.4.4 字符串 27
2.5 表达式和运算符 27
2.5.1 表达式 27
2.5.2 运算符 27
2.5.3 算术运算符 29
2.5.4 数据间的混合运算与类型转换 32
2.5.5 赋值运算符 33
2.5.6 关系运算符 34
2.5.7 逻辑运算符 35
2.5.8 sizeof运算符 36
2.5.9 运算符的优先级和结合性 36
小结 36
作业 37
第3章 顺序结构程序设计 39
3.1 结构化程序设计简介 39
3.2 C语句简介 41
3.3 格式输入/输出函数 42
3.3.1 printf()函数 42
3.3.2 scanf()函数 47
3.4 字符数据输入/输出函数 49
3.4.1 getchar()函数 49
3.4.2 putchar()函数 50
小结 51
作业 51
第4章 选择结构程序设计 52
4.1 if语句 52
4.1.1 简单if语句 52
4.1.2 多重if语句 54
4.1.3 嵌套if语句 55
4.1.4 if语句示例 57
4.2 switch语句 59
4.2.1 switch语句简介 59
4.2.2 switch语句示例 61
4.3 if语句和switch语句的比较 62
4.4 条件运算符 62
小结 63
作业 64
第5章 循环结构程序设计 65
5.1 循环应用的必要性 65
5.2 while循环 66
5.3 do...while循环 68
5.4 对比while循环和do...while循环 70
5.5 for循环 71
5.6 对比三种循环 74
5.7 break跳转语句和continue跳转语句 74
5.7.1 break跳转语句 74
5.7.2 continue跳转语句 75
5.8 循环的嵌套 76
小结 79
作业 79
第6章 数组 81
6.1 数组应用的必要性 81
6.2 数组及数组元素的概念 82
6.3 一维数组的定义及引用 83
6.3.1 一维数组的定义 83
6.3.2 一维数组的存储结构 83
6.3.3 一维数组元素的引用 84
6.3.4 一维数组的初始化 85
6.3.5 一维数组程序示例 86
6.4 二维数组的定义及引用 88
6.4.1 二维数组的定义 88
6.4.2 二维数组的存储结构 89
6.4.3 二维数组元素的引用 90
6.4.4 二维数组的初始化 90
6.4.5 二维数组程序示例 92
6.4.6 二维数组常用算法 93
6.5 多维数组的定义及引用 95
6.6 字符数组 96
6.6.1 字符数组的定义 96
6.6.2 字符数组的引用 97
6.6.3 字符数组的初始化 97
6.6.4 字符串及字符串结束标记 99
6.6.5 字符数组的输入与输出 100
6.6.6 常用字符串处理函数 101
6.6.7 字符数组程序示例 106
小结 108
作业 108
第7章 函数 109
7.1 函数应用的必要性 109
7.2 函数的分类 110
7.3 常用的库函数 110
7.4 函数的定义 113
7.5 函数原型 115
7.6 函数返回值 117
7.6.1 函数有返回值 117
7.6.2 函数无返回值 119
7.7 函数调用 119
7.7.1 区分形参和实参 120
7.7.2 函数的参数数据传递 121
7.7.3 数组作为函数参数 123
7.8 函数的嵌套与递归调用 125
7.8.1 函数的嵌套调用 125
7.8.2 函数的递归调用 128
7.9 变量的作用域 133
7.9.1 局部变量 133
7.9.2 全局变量 135
7.10 变量的存储类型 137
7.10.1 auto/register/extern存储类型 138
7.10.2 static存储类型 139
小结 142
作业 142
第8章 指针 144
8.1 地址和指针的概念 144
8.2 指针的定义和使用 145
8.2.1 指针变量的定义 145
8.2.2 指针变量的赋值 146
8.2.3 指针变量的引用 148
8.2.4 指针变量的运算 151
8.3 数组与指针 152
8.3.1 一维数组和指针 152
8.3.2 二维数组和指针 156
8.3.3 用数组名作函数参数 161
8.4 字符串与指针 164
8.4.1 通过赋初值的方式使指针指向一个字符串 164
8.4.2 通过赋值运算使指针指向一个字符串 164
8.4.3 字符指针作函数参数 165
8.5 指针数组 166
小结 166
作业 167
第9章 结构类型与联合类型 168
9.1 结构类型简介 168
9.2 结构类型定义和使用 169
9.2.1 定义结构类型的语法 169
9.2.2 声明结构类型变量 170
9.2.3 结构类型变量初始化 171
9.2.4 访问结构类型中的成员 173
9.2.5 结构类型数组 176
9.3 用结构类型实现链表 179
9.3.1 链表 179
9.3.2 动态存储分配 179
9.3.3 链表的基本操作 180
9.4 共用体类型的定义和使用 186
9.4.1 定义共用体类型的语法 187
9.4.2 声明共用体类型变量 187
9.4.3 共用体类型变量的初始化 188
9.4.4 共用体类型变量的赋值和使用 189
9.5 枚举类型 190
9.6 用typedef定义类型 191
小结 192
作业 192
第10章 文件 193
10.1 文件应用的必要性 193
10.2 文件概述 193
10.2.1 文件的概念 193
10.2.2 文件的分类 194
10.2.3 文件指针 195
10.3 文件打开与关闭 196
10.3.1 文件操作 196
10.3.2 文件的打开(fopen()函数) 196
10.3.3 文件的关闭(fclose()函数) 198
10.4 文件的顺序读/写 198
10.4.1 读/写文件中的一个字符 199
10.4.2 读/写一个字符串——(fgets()和fputs()) 201
10.4.3 读/写一个数据块(fread()和fwrite()) 202
10.5 文件的定位与随机读/写 204
10.5.1 位置指针复位函数rewind() 204
10.5.2 随机位置指针函数fseek() 205
10.5.3 返回文件当前位置的函数ftell() 206
10.5.4 ferror()函数 207
10.5.5 文件结束检测函数feof() 207
10.5.6 clearerr()函数 207
小结 208
作业 208
第11章 位运算 209
11.1 位运算应用的必要性 209
11.2 位运算符及位运算 210
11.2.1 位运算符 210
11.2.2 位运算 210
11.2.3 不同长度的数据进行位运算 212
11.3 位运算符优先级别 213
11.4 位段(位域) 213
11.4.1 位段的定义和位段变量的说明 213
11.4.2 位段的使用 215
小结 215
作业 216
附录A C语言的关键字 218
附录B 常用字符与ASCII代码对照表 219
附录C 常用库函数 220
参考文献 228