第1篇 基础知识 2
第1章 C语言概述 2
1.1 C语言的发展史 3
1.1.1 程序语言简述 3
1.1.2 C语言的历史 3
1.2 C语言的特点 4
1.3 一个简单的C程序 5
1.4 一个完整的C程序 7
1.5 C语言程序的格式 11
1.6 开发环境 12
1.6.1 Turbo C 2.0 12
1.6.2 Visual C++6.0 16
1.7 小结 21
第2章 算法 22
2.1 算法的基本概念 23
2.1.1 算法的特性 23
2.1.2 算法的优劣 24
2.2 算法的描述 24
2.2.1 自然语言 24
2.2.2 流程图 25
2.2.3 N-S流程图 28
2.3 小结 31
第3章 数据类型 32
3.1 编程规范 33
3.2 关键字 34
3.3 标识符 34
3.4 数据类型 35
3.5 常量 36
3.5.1 整型常量 37
3.5.2 实型常量 39
3.5.3 字符型常量 40
3.5.4 转义字符 43
3.5.5 符号常量 43
3.6 变量 44
3.6.1 整型变量 44
3.6.2 实型变量 47
3.6.3 字符型变量 49
3.7 变量的存储类别 50
3.7.1 静态存储与动态存储 51
3.7.2 auto变量 51
3.7.3 static变量 52
3.7.4 register变量 52
3.7.5 extern变量 53
3.8 混合运算 54
3.9 小结 55
3.10 实践与练习 55
第4章 运算符与表达式 56
4.1 表达式 57
4.2 赋值运算符与赋值表达式 59
4.2.1 变量赋初值 59
4.2.2 自动类型转换 61
4.2.3 强制类型转换 61
4.3 算术运算符与算术表达式 62
4.3.1 算术运算符 62
4.3.2 算术表达式 63
4.3.3 优先级与结合性 64
4.3.4 自增/自减运算符 66
4.4 关系运算符与关系表达式 68
4.4.1 关系运算符 68
4.4.2 关系表达式 68
4.4.3 优先级与结合性 69
4.5 逻辑运算符与逻辑表达式 70
4.5.1 逻辑运算符 71
4.5.2 逻辑表达式 71
4.5.3 优先级与结合性 71
4.6 位逻辑运算符与位逻辑表达式 72
4.6.1 位逻辑运算符 73
4.6.2 位逻辑表达式 73
4.7 逗号运算符与逗号表达式 73
4.8 复合赋值运算符 75
4.9 小结 76
4.10 实践与练习 76
第5章 常用的数据输入/输出函数 77
5.1 语句 78
5.2 字符数据输入/输出 78
5.2.1 字符数据输出 78
5.2.2 字符数据输入 79
5.3 字符串输入/输出 81
5.3.1 字符串输出函数 81
5.3.2 字符串输入函数 83
5.4 格式输出函数 83
5.5 格式输入函数 86
5.6 顺序程序设计应用 90
5.7 小结 92
5.8 实践与练习 92
第6章 选择结构程序设计 93
6.1 if语句 94
6.2 if语句的基本形式 94
6.2.1 if语句形式 94
6.2.2 if…else语句形式 97
6.2.3 else if语句形式 101
6.3 if的嵌套形式 104
6.4 条件运算符 107
6.5 switch语句 108
6.5.1 switch语句的基本形式 109
6.5.2 多路开关模式的switch语句 112
6.6 if…else语句和switch语句的区别 114
6.7 选择结构程序应用 116
6.8 小结 118
6.9 实践与练习 118
第7章 循环控制 119
7.1 循环语句 120
7.2 while语句 120
7.3 do…while语句 123
7.4 for语句 125
7.4.1 for语句使用 125
7.4.2 for循环的变体 128
7.4.3 for语句中的逗号应用 130
7.5 3种循环语句的比较 132
7.6 循环嵌套 132
7.6.1 循环嵌套的结构 132
7.6.2 循环嵌套实例 133
7.7 转移语句 135
7.7.1 goto语句 135
7.7.2 break语句 137
7.7.3 continue语句 138
7.8 小结 139
7.9 实践与练习 140
第2篇 核心技术 142
第8章 数组 142
8.1 一维数组 143
8.1.1 一维数组的定义和引用 143
8.1.2 一维数组初始化 145
8.1.3 一维数组应用 147
8.2 二维数组 148
8.2.1 二维数组的定义和引用 148
8.2.2 二维数组初始化 149
8.2.3 二维数组的应用 152
8.3 字符数组 153
8.3.1 字符数组的定义和引用 154
8.3.2 字符数组初始化 154
8.3.3 字符数组的结束标志 156
8.3.4 字符数组的输入和输出 157
8.3.5 字符数组的应用 158
8.4 多维数组 159
8.5 数组的排序算法 160
8.5.1 选择法排序 160
8.5.2 冒泡法排序 162
8.5.3 交换法排序 164
8.5.4 插入法排序 166
8.5.5 折半法排序 168
8.5.6 排序算法的比较 171
8.6 字符串处理函数 171
8.6.1 字符串复制 172
8.6.2 字符串连接 173
8.6.3 字符串比较 174
8.6.4 字符串大小写转换 176
8.6.5 获得字符串长度 177
8.7 数组应用 178
8.7.1 反转输出字符串 179
8.7.2 输出系统日期和时间 180
8.7.3 字符串的加密和解密 182
8.8 小结 183
8.9 实践与练习 184
第9章 函数 185
9.1 函数概述 186
9.2 函数的定义 188
9.2.1 函数定义的形式 189
9.2.2 定义与声明 190
9.3 返回语句 192
9.3.1 从函数返回 192
9.3.2 返回值 193
9.4 函数参数 195
9.4.1 形式参数与实际参数 195
9.4.2 数组作函数参数 197
9.4.3 main函数的参数 203
9.5 函数的调用 204
9.5.1 函数的调用方式 204
9.5.2 嵌套调用 207
9.5.3 递归调用 209
9.6 内部函数和外部函数 212
9.6.1 内部函数 212
9.6.2 外部函数 213
9.7 局部变量和全局变量 214
9.7.1 局部变量 215
9.7.2 全局变量 218
9.8 函数应用 220
9.9 小结 225
9.10 实践与练习 226
第10章 指针 227
10.1 指针相关概念 228
10.1.1 地址与指针 228
10.1.2 变量与指针 229
10.1.3 指针变量 229
10.1.4 指针自加自减运算 233
10.2 数组与指针 235
10.2.1 一维数组与指针 235
10.2.2 二维数组与指针 239
10.2.3 字符串与指针 242
10.2.4 字符串数组 244
10.3 指向指针的指针 245
10.4 指针变量作函数参数 248
10.5 返回指针值的函数 256
10.6 指针数组作main函数的参数 258
10.7 小结 260
10.8 实践与练习 260
第3篇 高级应用 261
第11章 结构体和共用体 262
11.1 结构体 263
11.1.1 结构体类型的概念 263
11.1.2 结构体变量的定义 264
11.1.3 结构体变量的引用 266
11.1.4 结构体类型的初始化 268
11.2 结构体数组 270
11.2.1 定义结构体数组 270
11.2.2 初始化结构体数组 272
11.3 结构体指针 274
11.3.1 指向结构体变量的指针 274
11.3.2 指向结构体数组的指针 277
11.3.3 结构体作为函数参数 279
11.4 包含结构的结构 281
11.5 链表 283
11.5.1 链表概述 283
11.5.2 创建动态链表 284
11.5.3 输出链表 287
11.6 链表相关操作 289
11.6.1 链表的插入操作 289
11.6.2 链表的删除操作 291
11.7 共用体 295
11.7.1 共用体的概念 295
11.7.2 共用体变量的引用 296
11.7.3 共用体变量的初始化 297
11.7.4 共用体类型的数据特点 298
11.8 枚举类型 298
11.9 小结 299
11.10 实践与练习 300
第12章 位运算 301
12.1 位与字节 302
12.2 位运算操作符 302
12.2.1 “与”运算符 302
12.2.2 “或”运算符 304
12.2.3 “取反”运算符 305
12.2.4 “异或”运算符 306
12.2.5 “左移”运算符 308
12.2.6 “右移”运算符 309
12.3 循环移位 311
12.4 位段 313
12.4.1 位段的概念与定义 313
12.4.2 位段相关说明 315
12.5 小结 316
12.6 实践与练习 316
第13章 预处理 317
13.1 宏定义 318
13.1.1 不带参数的宏定义 318
13.1.2 带参数的宏定义 319
13.2 #include指令 321
13.3 条件编译 323
13.3.1 #if命令 323
13.3.2 #ifdef及#ifndef命令 325
13.3.3 #undef命令 327
13.3.4 #line命令 327
13.3.5 #pragma命令 328
13.4 小结 329
13.5 实践与练习 329
第14章 文件 330
14.1 文件概述 331
14.2 文件基本操作 331
14.2.1 文件指针 331
14.2.2 文件的打开 332
14.2.3 文件的关闭 333
14.3 文件的读写 333
14.3.1 fputc函数 333
14.3.2 fgetc函数 334
14.3.3 fputs函数 335
14.3.4 fgets函数 336
14.3.5 fprintf函数 337
14.3.6 fscanf函数 338
14.3.7 fread和fwrite函数 339
14.4 文件的定位 341
14.4.1 fseek函数 341
14.4.2 rewind函数 343
14.4.3 ftell函数 344
14.5 小结 347
14.6 实践与练习 347
第15章 存储管理 348
15.1 内存组织方式 349
15.1.1 内存的组织方式 349
15.1.2 堆与栈 349
15.2 动态管理 351
15.2.1 malloc函数 351
15.2.2 calloc函数 352
15.2.3 realloc函数 353
15.2.4 free函数 354
15.3 内存丢失 355
15.4 小结 356
15.5 实践与练习 356
第16章 网络套接字编程 357
16.1 计算机网络基础 358
16.1.1 IP地址 358
16.1.2 OSI七层参考模型 358
16.1.3 地址解析 359
16.1.4 域名系统 360
16.1.5 TCP/IP协议 360
16.1.6 端口 362
16.1.7 套接字的引入 362
16.1.8 网络字节顺序 363
16.2 套接字基础 363
16.2.1 套接字概述 363
16.2.2 TCP的套接字的socket编程 363
16.2.3 UDP的套接字的socket编程 364
16.3 套接字函数 365
16.3.1 套接字函数介绍 365
16.3.2 基于TCP的网络聊天程序 370
16.4 小结 376
16.5 实践与练习 376
第4篇 项目实战 378
第17章 学生成绩管理系统 378
17.1 需求分析 379
17.2 系统设计 379
17.3 功能设计 380
17.3.1 功能选择界面 380
17.3.2 录入学生成绩信息 381
17.3.3 查询学生成绩信息 384
17.3.4 删除学生成绩信息 385
17.3.5 修改学生成绩信息 386
17.3.6 插入学生成绩信息 388
17.3.7 统计学生人数 390
17.4 小结 390
附录 ASCII表 391