第1章 C语言简介及基础 1
1.1 第一个C语言程序 1
1.2 程序的概念 1
1.3 程序算法及流程图 2
1.4 程序设计语言的发展历程 5
1.5 C语言发展历程 6
1.6 C语言特点 7
1.7 C语言程序的简单结构 8
1.8 C程序编译原理 10
1.9 C语言开发环境——Visual C++ 6.0使用 12
1.9.1 Visual C++ 6.0的安装及界面 12
1.9.2 使用Visual C++ 6.0编辑和运行程序 14
1.9.3 使用Visual C++ 6.0开发环境开发程序的步骤 20
1.9.4 在Visual C++ 6.0开发环境下调试程序 20
总结 25
作业 25
第2章 变量、数据类型和运算符 26
2.1 变量、数据类型和运算符应用的必要性 26
2.2 常量 27
2.3 变量 27
2.3.1 变量的概念 27
2.3.2 变量的定义与初始化 28
2.4 基本数据类型 29
2.4.1 整型 29
2.4.2 实型 31
2.4.3 字符型 32
2.4.4 字符串 32
2.5 表达式和运算符 32
2.5.1 表达式 32
2.5.2 运算符 32
2.5.3 算术运算符 34
2.5.4 数据间的混合运算与类型转换 37
2.5.5 赋值运算符 38
2.5.6 关系运算符 39
2.5.7 逻辑运算符 40
2.5.8 sizeof运算符 41
2.5.9 运算符的优先级和结合性 41
总结 42
作业 42
第3章 顺序结构程序设计 45
3.1 结构化程序设计简介 45
3.2 C语句简介 47
3.3 格式输入/输出函数 48
3.3.1 printf()函数 48
3.3.2 scanf()函数 53
3.4 字符数据输入/输出函数 55
3.4.1 getchar()函数 55
3.4.2 putchar()函数 56
总结 57
作业 57
第4章 选择结构程序设计 58
4.1 if语句 58
4.1.1 简单if语句 58
4.1.2 多重if语句 60
4.1.3 嵌套if语句 62
4.1.4 if语句示例 64
4.2 switch语句 65
4.3 if语句和switch语句的比较 68
4.4 条件运算符 68
总结 70
作业 70
第5章 循环结构程序设计 72
5.1 循环应用的必要性 72
5.2 while循环 73
5.3 do...while循环 75
5.4 对比while循环和do...while循环 78
5.5 for循环 78
5.6 对比3种循环 82
5.7 break跳转语句和continue跳转语句 82
5.7.1 break跳转语句 82
5.7.2 continue跳转语句 83
5.8 循环的嵌套 84
总结 87
作业 88
第6章 数组 90
6.1 数组应用的必要性 90
6.2 数组及数组元素的概念 91
6.3 一维数组的定义及引用 92
6.3.1 一维数组的定义 92
6.3.2 一维数组的存储结构 93
6.3.3 一维数组元素的引用 93
6.3.4 一维数组的初始化 94
6.3.5 一维数组程序示例 95
6.4 二维数组的定义及引用 97
6.4.1 二维数组的定义 97
6.4.2 二维数组的存储结构 99
6.4.3 二维数组元素的引用 99
6.4.4 二维数组的初始化 99
6.4.5 二维数组程序示例 101
6.4.6 二维数组常用算法 102
6.5 多维数组的定义及引用 104
6.6 字符数组 105
6.6.1 字符数组的定义 106
6.6.2 字符数组的引用 106
6.6.3 字符数组的初始化 106
6.6.4 字符串及字符串结束标记 108
6.6.5 字符数组的输入与输出 109
6.6.6 常用字符串处理函数 110
6.6.7 字符数组程序示例 116
总结 117
作业 117
第7章 函数 118
7.1 函数应用的必要性 118
7.2 函数的分类 119
7.3 常用的库函数 120
7.4 函数定义 122
7.5 函数原型 124
7.6 函数返回值 126
7.6.1 函数有返回值 126
7.6.2 函数无返回值 128
7.7 函数调用 129
7.7.1 区分形参和实参 129
7.7.2 函数的参数数据传递 130
7.7.3 数组作为函数参数 133
7.8 函数的嵌套与递归调用 135
7.8.1 函数的嵌套调用 135
7.8.2 函数的递归调用 138
7.9 变量的作用域 143
7.9.1 局部变量 143
7.9.2 全局变量 145
7.10 变量的存储类型 147
7.10.1 auto/register/extern存储类型 148
7.10.2 static存储类型 149
总结 152
作业 152
第8章 指针 153
8.1 地址和指针的概念 153
8.2 指针的定义和使用 155
8.2.1 指针变量的定义 155
8.2.2 指针变量的赋值 155
8.2.3 指针变量的引用 157
8.2.4 指针变量的运算 161
8.3 数组与指针 162
8.3.1 一维数组和指针 162
8.3.2 二维数组和指针 166
8.3.3 数组名作为函数参数 171
8.4 字符串与指针 174
8.4.1 通过赋初值的方式使指针指向一个字符串 174
8.4.2 通过赋值运算使指针指向一个字符串 174
8.4.3 字符指针作为函数参数 175
8.5 指针数组 176
总结 177
作业 177
第9章 结构类型与联合类型 179
9.1 结构类型简介 179
9.2 结构类型定义和使用 180
9.2.1 定义结构类型的语法 180
9.2.2 声明结构类型变量 181
9.2.3 结构类型变量初始化 182
9.2.4 访问结构类型中的成员 184
9.2.5 结构类型数组 187
9.3 用结构类型实现链表 190
9.3.1 链表 190
9.3.2 动态存储分配 191
9.3.3 链表的基本操作 192
9.4 共用体类型的定义和使用 198
9.4.1 定义共用体类型的语法 198
9.4.2 声明共用体类型变量 199
9.4.3 共用体类型变量的初始化 200
9.4.4 共用体类型变量的赋值和使用 200
9.5 枚举类型 201
9.6 用typedef定义类型 203
总结 204
作业 204
第10章 文件 205
10.1 文件应用的必要性 205
10.2 文件概述 205
10.2.1 文件的概念 205
10.2.2 文件的分类 206
10.2.3 文件指针 207
10.3 文件打开与关闭 208
10.3.1 对文件操作的一般步骤 208
10.3.2 文件的打开(fopen()函数) 208
10.3.3 文件的关闭(fclose()函数) 210
10.4 文件的顺序读/写 211
10.4.1 读/写文件中的一个字符 211
10.4.2 读/写一个字符串 214
10.4.3 读/写一个数据块 215
10.5 文件的定位与随机读/写 216
10.5.1 位置指针复位函数rewind() 216
10.5.2 随机位置指针函数fseek() 217
10.5.3 返回文件当前位置的函数ftell() 219
10.5.4 ferror()函数 219
10.5.5 文件结束检测函数feof() 219
10.5.6 clearerr()函数 220
总结 220
作业 221
第11章 位运算 222
11.1 位运算应用的必要性 222
11.2 位运算符及位运算 222
11.2.1 位运算符 222
11.2.2 运算符 222
11.2.3 不同长度的数据进行位运算 225
11.3 位运算符优先级别 225
11.4 位段(位域) 226
11.4.1 位段的定义和位段变量的声明 226
11.4.2 位段的使用 227
总结 228
作业 228
参考文献 230