第1章 初识C语言 1
1.1 C语言概述 1
1.1.1计算机语言发展史 1
1.1.2什么是C语言 2
1.1.3 C语言的特点 3
1.1.4 C语言的发展趋势 3
1.2开发环境搭建 4
1.2.1主流开发工具介绍 4
1.2.2 Visual Studio安装 5
1.2.3 Visual Studio主界面 7
1.3 HelloWorld程序的编写 8
1.4 C语言代码风格 16
1.4.1程序格式 16
1.4.2程序注释 19
1.4.3命名规则 19
小结 20
习题 20
第2章 数据类型与运算符 22
2.1数据存储的原理 22
2.1.1进制 22
2.1.2进制转换 24
2.1.3原码、反码、补码 26
2.1.4原码、反码、补码的应用 27
2.2关键字和标识符 28
2.2.1关键字 28
2.2.2标识符 28
2.3常量与变量 29
2.3.1常量的概念 29
2.3.2变量的定义 31
2.3.3变量的数据类型 32
2.3.4数据类型的转换 38
2.4运算符 40
2.4.1运算符与表达式 40
2.4.2算术运算符 41
2.4.3赋值运算符 43
2.4.4关系运算符 44
2.4.5逻辑运算符 45
2.4.6三目运算符 46
2.4.7逗号运算符 46
2.4.8位运算符 47
2.4.9 sizeof运算符 50
2.4.10运算符的优先级 51
小结 52
习题 53
第3章 结构化程序设计 54
3.1算法——程序设计的灵魂 54
3.1.1算法的概念 54
3.1.2流程图 55
3.2 C语言的基本语句 56
3.3顺序结构语句 57
3.4选择结构语句 57
3.4.1 if条件语句 58
3.4.2 if语句的嵌套 61
3.4.3 switch条件语句 63
3.4.4 if语句与switch语句的异同 66
3.5循环结构语句 66
3.5.1 while循环语句 67
3.5.2 do...while循环语句 68
3.5.3 for循环语句 69
3.5.4循环的嵌套 70
3.5.5跳转语句 72
3.6进阶案例(一)——打印水仙花数 74
3.7进阶案例(二)——查找100以内的素数 75
小结 76
习题 77
第4章 函数 79
4.1初识函数 79
4.1.1函数的概念 79
4.1.2函数的定义 80
4.1.3函数的返回值 82
4.1.4 printf()函数和scanf()函数 84
4.2内存四区 87
4.3函数调用 88
4.3.1函数的调用方式 88
4.3.2函数调用时的数据传递 90
4.3.3嵌套调用 92
4.3.4递归调用 93
4.3.5案例——斐波那契数列 95
4.4外部函数与内部函数 96
4.4.1外部函数 96
4.4.2内部函数 98
4.5局部变量与全局变量 99
4.5.1局部变量 99
4.5.2全局变量 100
4.5.3变量的作用域 101
4.6进阶案例——汉诺塔 102
小结 103
习题 104
第5章 数组 106
5.1数组的概念 106
5.2一维数组 107
5.2.1一维数组的定义与初始化 107
5.2.2一维数组的引用 107
5.2.3一维数组的常见操作 108
5.3二维数组 117
5.3.1二维数组的定义与初始化 117
5.3.2二维数组的引用 118
5.3.3二维数组的应用 119
5.4数组作为函数参数 122
5.5进阶案例(一)——斐波那契数列 124
5.6进阶案例(二)——打印杨辉三角形 125
小结 126
习题 127
第6章 指针 128
6.1指针与指针变量 128
6.1.1指针的概念 128
6.1.2指针变量的定义 129
6.1.3指针变量的引用 131
6.1.4指针的运算 132
6.2指针与数组 135
6.2.1指针与一维数组 135
6.2.2指针与二维数组 137
6.3指针与函数 140
6.3.1指针作为函数参数 140
6.3.2数组指针作为函数参数 142
6.3.3指针函数 143
6.3.4函数指针变量的定义 144
6.3.5函数指针引用函数 145
6.3.6函数指针作为函数参数 147
6.4指针数组与二级指针 148
6.4.1指针数组的定义 148
6.4.2指针数组的应用 149
6.4.3带参数的main()函数 151
6.4.4二级指针 152
6.5内存申请和操作 154
6.5.1内存申请 154
6.5.2内存回收 157
6.5.3内存操作 157
6.6指针与const修饰符 162
6.7进阶案例——查找不及格的学生成绩 163
小结 166
习题 166
第7章 字符串 168
7.1字符串和字符数组 168
7.1.1字符数组 168
7.1.2字符串概念 170
7.1.3字符串与指针 173
7.1.4字符数组与字符指针 174
7.2字符串的输入/输出 176
7.2.1 gets()函数 176
7.2.2 puts()函数 177
7.3字符串函数 177
7.3.1字符串比较函数 178
7.3.2字符串查找函数 179
7.3.3字符串连接函数 182
7.3.4字符串复制函数 184
7.4字符串作为函数参数 185
7.5进阶案例——去除字符串两端空格 186
小结 188
习题 188
第8章 编译和预处理 190
8.1 C语言的运行机制 190
8.2程序错误分析 191
8.2.1错误分类 191
8.2.2排错 192
8.3预处理命令——宏定义 192
8.3.1不带参数的宏定义 192
8.3.2带参数的宏定义 195
8.4预处理命令——文件包含 197
8.4.1文件包含命令的形式 197
8.4.2文件包含的实例 198
8.5预处理命令——条件编译 199
8.5.1 #if/#else/#endif指令 200
8.5.2 #ifdef指令 200
8.5.3 #ifndef指令 201
小结 204
习题 205
第9章 结构体和共用体 207
9.1结构体类型和结构体变量 207
9.1.1结构体类型定义 207
9.1.2结构体变量的定义 208
9.1.3结构体变量的内存分配 210
9.1.4结构体变量的初始化 212
9.1.5结构体变量的引用 213
9.2结构体数组 214
9.2.1结构体数组的定义 214
9.2.2结构体数组的初始化 215
9.2.3结构体数组的引用 215
9.3结构体指针变量 216
9.3.1结构体指针变量概述 216
9.3.2结构体数组指针 217
9.4结构体类型数据在函数间的传递 218
9.4.1结构体变量作为函数参数 218
9.4.2结构体数组作为函数参数 219
9.4.3结构体指针作为函数参数 220
9.5 union共用体 220
9.5.1共用体数据类型的定义 221
9.5.2共用体变量的定义 221
9.5.3共用体变量的初始化和引用 223
9.6Typedef——给数据类型取别名 224
9.7进阶案例——求学生平均成绩 225
小结 226
习题 227
第10章 文件操作 229
10.1文件概述 229
10.1.1计算机中的流 229
10.1.2文件的概念 230
10.1.3文件的分类 230
10.1.4文件的缓冲区 231
10.1.5文件指针 231
10.1.6文件位置指针 232
10.2文件的打开与关闭 232
10.2.1打开文件 232
10.2.2关闭文件 233
10.3文件的读写 234
10.3.1单字符读写文件 235
10.3.2单行读写文件 237
10.3.3二进制读写文件 239
10.3.4格式化读写文件 241
10.3.5文件检测函数 243
10.4文件的随机读写 244
10.4.1文件位置指针的定位 244
10.4.2文件随机读写的应用 245
小结 246
习题 246
第11章 综合项目——电子词典 248
11.1项目分析 248
11.1.1功能描述 248
11.1.2编程思路 248
11.2项目实现 250
11.2.1创建项目 250
11.2.2项目设计 250
11.2.3预处理实现 252
11.2.4功能函数实现 253
11.2.5主函数实现 259
11.2.6效果展示 261
项目心得 263
小结 264
附录A ASCII码表 265
附录B 运算符的优先级和结合性 266
附录C 常用ANSI C标准库函数(1) 267
附录D 常用ANSI C标准库函数(2) 269
参考文献 271