第1章 C语言概述 1
1.1 C语言的发展史 2
1.1.1 程序语言简述 2
1.1.2 C语言的历史 2
1.2 C语言的特点 3
1.3 一个简单的C程序 3
1.4 一个完整的C程序 5
1.5 C语言程序的格式 8
1.6 开发环境 9
1.6.1 Dev C++ 9
1.6.2 Visual C++6.0 13
小结 14
上机指导 15
习题 15
第2章 算法 16
2.1 算法的基本概念 17
2.1.1 算法的特性 17
2.1.2 算法的优劣 17
2.2 算法的描述 18
2.2.1 自然语言 18
2.2.2 流程图 19
2.2.3 N-S流程图 22
小结 24
上机指导 24
习题 24
第3章 数据类型 25
3.1 编程规范 26
3.2 关键字 26
3.3 标识符 27
3.4 数据类型 28
3.5 常量 29
3.5.1 整型常量 29
3.5.2 实型常量 31
3.5.3 字符型常量 32
3.5.4 转义字符 34
3.5.5 符号常量 35
3.6 变量 36
3.6.1 整型变量 36
3.6.2 实型变量 38
3.6.3 字符型变量 40
3.7 变量的存储类别 42
3.7.1 静态存储与动态存储 42
3.7.2 auto变量 42
3.7.3 static变量 43
3.7.4 register变量 43
3.7.5 extern变量 44
3.8 混合运算 45
小结 46
上机指导 46
习题 47
第4章 运算符与表达式 48
4.1 表达式 49
4.2 赋值运算符与赋值表达式 50
4.2.1 变量赋初值 51
4.2.2 自动类型转换 52
4.2.3 强制类型转换 52
4.3 算术运算符与算术表达式 53
4.3.1 算术运算符 53
4.3.2 算术表达式 54
4.3.3 优先级与结合性 55
4.3.4 自增/自减运算符 57
4.4 关系运算符与关系表达式 58
4.4.1 关系运算符 58
4.4.2 关系表达式 59
4.4.3 优先级与结合性 59
4.5 逻辑运算符与逻辑表达式 61
4.5.1 逻辑运算符 61
4.5.2 逻辑表达式 61
4.5.3 优先级与结合性 61
4.6 位逻辑运算符与位逻辑表达式 62
4.6.1 位逻辑运算符 62
4.6.2 位逻辑表达式 63
4.7 逗号运算符与逗号表达式 63
4.8 复合赋值运算符 64
小结 65
上机指导 67
习题 67
第5章 常用的数据输入/输出函数 68
5.1 语句 69
5.2 字符数据输入/输出 69
5.2.1 字符数据输出 69
5.2.2 字符数据输入 70
5.3 字符串输入/输出 72
5.3.1 字符串输出函数 72
5.3.2 字符串输入函数 73
5.4 格式输出函数 74
5.5 格式输入函数 78
5.6 顺序程序设计应用 81
小结 83
上机指导 83
习题 83
第6章 选择结构程序设计 85
6.1 if语句 86
6.2 if语句的基本形式 86
6.2.1 if语句形式 86
6.2.2 if...else语句形式 89
6.2.3 else if语句形式 92
6.3 if的嵌套形式 95
6.4 条件运算符 97
6.5 switch语句 99
6.5.1 switch语句的基本形式 99
6.5.2 多路开关模式的switch语句 103
6.6 if...else语句和switch语句的区别 104
6.7 选择结构程序应用 106
小结 108
上机指导 108
习题 109
第7章 循环控制 110
7.1 循环语句 111
7.2 while语句 111
7.3 do-while语句 112
7.4 for语句 114
7.4.1 for语句使用 114
7.4.2 for循环的变体 117
7.4.3 for语句中的逗号应用 119
7.5 3种循环语句的比较 120
7.6 循环嵌套 120
7.6.1 循环嵌套的结构 120
7.6.2 循环嵌套实例 122
7.7 转移语句 124
7.7.1 goto语句 124
7.7.2 break语句 125
7.7.3 continue语句 126
小结 127
上机指导 128
习题 128
第8章 数组 129
8.1 一维数组 130
8.1.1 一维数组的定义和引用 130
8.1.2 一维数组初始化 131
8.1.3 一维数组应用 134
8.2 二维数组 135
8.2.1 二维数组的定义和引用 135
8.2.2 二维数组初始化 136
8.2.3 二维数组应用 138
8.3 字符数组 141
8.3.1 字符数组的定义和引用 141
8.3.2 字符数组初始化 141
8.3.3 字符数组的结束标志 143
8.3.4 字符数组的输入和输出 144
8.3.5 字符数组应用 145
8.4 多维数组 146
8.5 数组的排序算法 146
8.5.1 选择法排序 146
8.5.2 冒泡法排序 148
8.5.3 交换法排序 150
8.5.4 插入法排序 152
8.5.5 折半法排序 154
8.5.6 排序算法的比较 156
8.6 字符串处理函数 157
8.6.1 字符串复制 157
8.6.2 字符串连接 158
8.6.3 字符串比较 160
8.6.4 字符串大小写转换 161
8.6.5 获得字符串长度 163
8.7 数组应用 164
8.7.1 反转输出字符串 164
8.7.2 输出系统日期和时间 165
8.7.3 字符串的加密和解密 166
小结 168
上机指导 168
习题 169
第9章 函数 170
9.1 函数概述 171
9.2 函数的定义 172
9.2.1 函数定义的形式 173
9.2.2 定义与声明 174
9.3 返回语句 177
9.3.1 从函数返回 177
9.3.2 返回值 178
9.4 函数参数 180
9.4.1 形式参数与实际参数 180
9.4.2 数组作函数参数 182
9.4.3 main函数的参数 187
9.5 函数的调用 188
9.5.1 函数的调用方式 188
9.5.2 嵌套调用 193
9.5.3 递归调用 195
9.6 内部函数和外部函数 197
9.6.1 内部函数 197
9.6.2 外部函数 198
9.7 局部变量和全局变量 200
9.7.1 局部变量 200
9.7.2 全局变量 203
9.8 函数应用 204
小结 210
上机指导 210
习题 211
第10章 指针 212
10.1 指针相关概念 213
10.1.1 地址与指针 213
10.1.2 变量与指针 214
10.1.3 指针变量 214
10.1.4 指针自加自减运算 218
10.2 数组与指针 219
10.2.1 一维数组与指针 219
10.2.2 二维数组与指针 223
10.2.3 字符串与指针 226
10.2.4 字符串数组 228
10.3 指向指针的指针 229
10.4 指针变量作函数参数 232
10.5 返回指针值的函数 240
10.6 指针数组作main函数的参数 242
小结 243
上机指导 243
习题 244
第11章 结构体和共用体 245
11.1 结构体 246
11.1.1 结构体类型的概念 246
11.1.2 结构体变量的定义 247
11.1.3 结构体变量的引用 248
11.1.4 结构体类型的初始化 250
11.2 结构体数组 251
11.2.1 定义结构体数组 251
11.2.2 初始化结构体数组 253
11.3 结构体指针 254
11.3.1 指向结构体变量的指针 255
11.3.2 指向结构体数组的指针 257
11.3.3 结构体作为函数参数 259
11.4 包含结构的结构 262
11.5 链表 263
11.5.1 链表概述 263
11.5.2 创建动态链表 264
11.5.3 输出链表 266
11.6 链表相关操作 268
11.6.1 链表的插入操作 269
11.6.2 链表的删除操作 270
11.7 共用体 274
11.7.1 共用体的概念 274
11.7.2 共用体变量的引用 274
11.7.3 共用体变量的初始化 275
11.7.4 共用体类型的数据特点 276
11.8 枚举类型 276
小结 278
上机指导 278
习题 279
第12章 位运算 280
12.1 位与字节 281
12.2 位运算操作符 281
12.2.1 “与”运算符 281
12.2.2 “或”运算符 283
12.2.3 “取反”运算符 284
12.2.4 “异或”运算符 285
12.2.5 “左移”运算符 287
12.2.6 “右移”运算符 288
12.3 循环移位 289
12.4 位段 292
12.4.1 位段的概念与定义 292
12.4.2 位段相关说明 293
小结 294
上机指导 294
习题 295
第13章 预处理 296
13.1 宏定义 297
13.1.1 不带参数的宏定义 297
13.1.2 带参数的宏定义 298
13.2 #include指令 299
13.3 条件编译 301
13.3.1 #if命令 301
13.3.2 #ifdef及#ifndef命令 304
13.3.3 #undef命令 305
13.3.4 #line命令 305
13.3.5 #pragma命令 306
小结 306
上机指导 307
习题 307
第14章 文件 308
14.1 文件概述 309
14.2 文件基本操作 309
14.2.1 文件指针 309
14.2.2 文件的打开 310
14.2.3 文件的关闭 310
14.3 文件的读写 311
14.3.1 fputc函数 311
14.3.2 fgetc函数 312
14.3.3 fputs函数 312
14.3.4 fgets函数 313
14.3.5 fprintf函数 314
14.3.6 fscanf函数 315
14.3.7 fread和fwrite函数 316
14.4 文件的定位 318
14.4.1 fseek函数 318
14.4.2 rewind函数 320
14.4.3 ftell函数 321
小结 322
上机指导 323
习题 323
第15章 存储管理 324
15.1 内存组织方式 325
15.1.1 内存的组织方式 325
15.1.2 堆与栈 325
15.2 动态管理 327
15.2.1 malloc函数 327
15.2.2 calloc函数 328
15.2.3 realloc函数 329
15.2.4 free函数 330
15.3 内存丢失 331
小结 332
上机指导 332
习题 333
第16章 网络套接字编程 334
16.1 内存组织方式 335
16.1.1 IP地址 335
16.1.2 OSI七层参考模型 335
16.1.3 地址解析 336
16.1.4 域名系统 337
16.1.5 TCP/IP 337
16.1.6 端口 339
16.1.7 套接字的引入 339
16.1.8 网络字节顺序 339
16.2 套接字概述 339
16.2.1 套接字概述 340
16.2.2 TCP的套接字的socket编程 340
16.2.3 UDP的套接字的socket编程 340
16.3 套接字函数 341
16.3.1 套接字函数介绍 341
16.3.2 基于TCP的网络聊天程序 345
小结 351
上机指导 352
习题 352
第17章 综合实例——学生信息管理系统 353
17.1 开发背景 354
17.2 开发环境需求 354
17.3 系统功能设计 354
17.4 预处理模块设计 354
17.4.1 模块概述 354
17.4.2 控制输出格式 355
17.4.3 文件引用 355
17.4.4 宏定义 355
17.4.5 函数声明 355
17.5 主函数设计 356
17.5.1 功能概述 356
17.5.2 实现主函数 356
17.5.3 显示主菜单 358
17.6 录入学生信息 358
17.6.1 模块概述 358
17.6.2 实现文件的打开和关闭功能 359
17.6.3 实现录入学生信息 360
17.7 查询学生信息 362
17.7.1 模块概述 362
17.7.2 查询没有记录的文件 363
17.7.3 查找并打印学生信息 363
17.8 删除学生信息 364
17.8.1 模块概述 364
17.8.2 实现删除学生信息 364
17.9 修改学生信息 366
17.9.1 模块概述 366
17.9.2 实现修改学生信息 367
17.10 插入学生信息 368
17.10.1 模块概述 368
17.10.2 实现插入学生信息 368
17.11 学生成绩排名 370
17.11.1 模块概述 370
17.11.2 使用交换排序法实现排序功能 371
17.11.3 实现学生成绩排名 371
17.12 统计学生总数 372
17.12.1 模块概述 372
17.12.2 实现统计学生总数 372
17.13 显示所有学生信息 373
17.13.1 模块概述 373
17.13.2 读取并显示所有学生信息 374
小结 374