第1课 C语言概述 3
1.1 本课学习目标 3
1.2 C语言发展介绍 3
1.3 C语言特点 4
1.4 C语言编译器 5
1.5 安装Turbo C 3.0 6
1.6 Turbo C 3.0开发环境 9
1.6.1 File(文件)菜单 9
1.6.2 Edit(编辑)菜单 10
1.6.3 Run(运行)菜单 10
1.6.4 compile(编译)菜单 11
1.6.5 Project(项目)菜单 11
1.6.6 Debug(调试)菜单 12
1.7 进行C语言程序开发 12
1.7.1 编辑源代码 13
1.7.2 源代码编译 13
1.7.3 链接目标代码 13
1.7.4 运行可执行程序 14
1.8 一个简单的C语言程序 14
1.9 C语言程序结构 15
1.9.1 C程序组成部分 15
1.9.2 C语言程序格式总结 18
1.10 本课回顾和网络关键词 19
第2课 C语言算法和数据类型 21
2.1 本课学习目标 21
2.2 算法基础 21
2.2.1 算法的概念 21
2.2.2 流程图表示算法 23
2.2.3 计算机语言表示算法 24
2.3 C语言数据类型概述 24
2.4 常量和变量 26
2.4.1 常量 26
2.4.2 变量 27
2.5 整型数据 30
2.5.1 整型常量 31
2.5.2 整型变量 32
2.6 实型数据 35
2.6.1 实型常量 35
2.6.2 实型变量 36
2.6.3 实型常量的类型 38
2.7 字符型数据 38
2.7.1 字符常量 39
2.7.2 字符串常量 41
2.7.3 字符变量 41
2.8 初始化变量 44
2.9 整型、实型与字符型数据间的运算 45
2.10 本课回顾和网络关键词 47
第3课 C语言运算符和表达式 49
3.1 本课学习目标 49
3.2 运算符和表达式基础 49
3.2.1 运算符的种类 49
3.2.2 运算符的优先级 51
3.3 算术运算符和算术表达式 52
3.3.1 单目运算符 53
3.3.2 双目运算符 54
3.4 赋值运算符和赋值表达式 55
3.4.1 基本赋值运算符 56
3.4.2 复合赋值运算符 59
3.4.3 赋值表达式 60
3.5 关系运算符和关系表达式 62
3.6 逻辑运算符和逻辑表达式 64
3.7 逗号运算符和逗号表达式 67
3.8 求字节数运算符 69
3.9 本课回顾和网络关键词 71
第4课 C语句和数据的输入输出 73
4.1 本课学习目标 73
4.2 C语句初步 73
4.2.1 C语句简介 73
4.2.2 空白对语句的作用 75
4.2.3 赋值语句 76
4.3 数据的输入和输出 77
4.3.1 putchar函数 77
4.3.2 getchar函数 79
4.3.3 printf函数 81
4.3.4 scanf函数 85
4.3.5 puts函数 90
4.3.6 gets函数 91
4.4 本课回顾和网络关键词 93
第5课 程序流程控制 95
5.1 本课学习目标 95
5.2 顺序结构 95
5.3 选择结构 97
5.3.1 单分支结构语句 98
5.3.2 双分支结构语句 99
5.3.3 多分支结构语句 104
5.3.4 条件运算符和条件表达式 107
5.4 循环结构 109
5.4.1 for语句循环 109
5.4.2 while语句 113
5.4.3 do…while语句 116
5.4.4 循环语句的总结和效率 118
5.4.5 goto语句 119
5.4.6 break语句 120
5.4.7 continue语句 121
5.4.8 死循环和退出程序 121
5.5 本课回顾和网络关键词 123
第6课 数组和字符串 125
6.1 本课学习目标 125
6.2 一维数组 125
6.2.1 定义一维数组 126
6.2.2 引用一维数组元素 126
6.2.3 初始化一维数组 128
6.3 多维数组 131
6.3.1 二维数组 132
6.3.2 多维数组 136
6.3.3 引用多维数组 138
6.4 字符数组与字符串 140
6.4.1 字符数组 140
6.4.2 字符串与字符数组 143
6.4.3 字符数组的输入/输出 143
6.5 字符串处理函数 146
6.5.1 测试字符串长度函数 146
6.5.2 字符串大小写转换函数 147
6.5.3 字符串复制函数 148
6.5.4 字符串比较函数 151
6.5.5 字符串连接函数 153
6.5.6 其他字符串函数 155
6.5.7 将字符串转换成数值的函数 155
6.6 字符处理函数 156
6.6.1 字符检测函数 156
6.6.2 字符大小写转换函数 158
6.7 本课回顾和网络关键词 159
第7课 函数 161
7.1 本课学习目标 161
7.2 C语言函数基础 161
7.2.1 函数分类 162
7.2.2 函数的定义 163
7.3 函数的声明和函数原型 166
7.4 参数 167
7.4.1 形参和实参 168
7.4.2 数组名作为函数参数 169
7.4.3 数组作为函数参数 172
7.5 返回值 176
7.6 函数的调用 178
7.6.1 函数调用格式 178
7.6.2 函数调用的方式 180
7.6.3 对被调函数的声明 182
7.6.4 调用函数方式的深入分析 183
7.7 函数的嵌套调用和递归调用 184
7.7.1 函数的嵌套调用 185
7.7.2 函数的递归调用 189
7.8 变量的作用域和生存期 193
7.8.1 变量作用域 193
7.8.2 静态存储变量和动态存储变量 197
7.9 项目文件 206
7.10 内部函数和外部函数 208
7.10.1 内部函数 208
7.10.2 外部函数 209
7.11 库函数基础 211
7.11.1 C库函数介绍 211
7.11.2 C库函数分类 212
7.12 本课回顾和网络关键词 213
第8课 指针 215
8.1 本课学习目标 215
8.2 基本概念 215
8.3 变量的指针和指向变量的指针变量 216
8.3.1 指针变量的声明 217
8.3.2 指针变量的初始化 217
8.3.3 指针变量的引用 218
8.3.4 关于指针运算符的说明 220
8.3.5 指针变量的运算 222
8.3.6 指针变量作为函数参数 223
8.3.7 void类型的指针 226
8.4 指针和数组 228
8.4.1 数组元素的指针 229
8.4.2 指向一维数组元素的指针变量 230
8.4.3 通过指针引用数组元素 231
8.4.4 使用指针变量应该注意的问题 235
8.4.5 数组名作函数参数 238
8.5 指针和多维数组 242
8.5.1 多维数组的地址 242
8.5.2 指向多维数组的指针变量 245
8.6 指针和字符串 248
8.6.1 指针访问字符串 248
8.6.2 字符串指针作函数参数 250
8.6.3 使用字符串指针变量与字符数组的区别 252
8.7 指针数组和多级指针 253
8.7.1 指针数组 253
8.7.2 多级指针的定义和应用 255
8.7.3 指向指针的指针 257
8.7.4 main函数的参数 258
8.8 指针函数和函数指针 260
8.9 本课回顾和网络关键词 264
第9课 结构体、共用体和枚举 265
9.1 本课学习目标 265
9.2 结构体 265
9.2.1 定义结构体类型 266
9.2.2 结构体类型变量的定义 267
9.2.3 结构体变量的引用 269
9.2.4 结构体变量的初始化 272
9.3 结构体数组 273
9.3.1 结构体数组定义 273
9.3.2 结构体数组的初始化 276
9.3.3 结构体数组的引用 280
9.4 结构体指针 282
9.4.1 结构体指针变量的定义 282
9.4.2 结构体指针变量的初始化 283
9.4.3 结构体指针变量的引用 283
9.4.4 指向结构变量的指针 284
9.4.5 指向结构体数组的指针 285
9.5 结构体和函数 287
9.5.1 结构体变量和结构体指针作为函数参数 287
9.5.2 返回结构体类型值的函数 289
9.6 共用体 291
9.6.1 共用体及共用体变量的定义 291
9.6.2 共用体变量的引用与初始化 294
9.6.3 结构和共用体的区别 295
9.7 枚举 296
9.7.1 定义枚举类型 297
9.7.2 定义枚举变量 298
9.7.3 枚举变量的引用 298
9.8 用typedef定义类型 300
9.9 本课回顾和网络关键词 303
第10课 链表 305
10.1 本课学习目标 305
10.2 动态内存分配 305
10.2.1 为什么用动态内存分配 306
10.2.2 如何实现动态内存分配及其管理 306
10.3 链表 310
10.3.1 链表概述 311
10.3.2 单向链表 314
10.3.3 创建链表 317
10.3.4 删除整个链表 318
10.3.5 在链表中插入结点 319
10.3.6 在链表中删除结点 319
10.3.7 双向链表 320
10.3.8 循环链表 323
10.4 本课回顾和网络关键词 323
第11课 位运算 325
11.1 本课学习目标 325
11.2 位运算符和位运算 325
11.2.1 按位与运算 326
11.2.2 按位或运算 327
11.2.3 按位异或运算 328
11.2.4 取反运算 329
11.2.5 左移运算 329
11.2.6 右移运算 330
11.2.7 位运算应用实例 330
11.3 位域 333
11.4 本课回顾和网络关键词 335
第12课 预编译处理 337
12.1 本课学习目标 337
12.2 预处理概述 337
12.3 宏定义 338
12.3.1 不带参数的宏定义 338
12.3.2 带参数的宏定义 341
12.3.3 字符串化运算符 344
12.3.4 并接运算符 345
12.4 文件包含 345
12.5 条件编译 348
12.6 本课回顾和网络关键词 354
第13课 文件操作处理 357
13.1 本课学习目标 357
13.2 文件概述 357
13.2.1 文本文件 358
13.2.2 文件分类 359
13.3 文件指针 360
13.4 文件打开与关闭 360
13.4.1 文件打开 360
13.4.2 文件关闭 363
13.5 文件读写操作 365
13.5.1 字符读写函数 366
13.5.2 字符串读写函数 370
13.5.3 格式化读写函数 374
13.5.4 数据块读写函数 377
13.5.5 其他读写函数 379
13.6 文件的随机读写 381
13.6.1 fseek函数 381
13.6.2 rewind函数 384
13.6.3 ftell函数 384
13.7 文件管理函数 386
13.7.1 删除文件 386
13.7.2 重命名文件 387
13.7.3 复制文件 388
13.8 文件状态检测函数 391
13.8.1 feof函数 391
13.8.2 ferror函数 392
13.8.3 clearerr函数 392
13.9 本课回顾和网络关键词 396
第14课 错误和程序调试 397
14.1 本课学习目标 397
14.2 常见错误分析 397
14.3 错误的检出与分离 403
14.4 程序调试 405
14.5 本课回顾和网络关键词 409
第15课 组件技术简要介绍 411
15.1 本课学习目标 411
15.2 组件技术概述 411
15.3 体系结构 412
15.4 CORBA技术体系 413
15.4.1 CORBA概述 413
15.4.2 对象管理体系结构OMA 414
15.4.3 CORBA的结构基础 415
15.4.4 CORBA技术应用 417
15.5 DCOM技术 418
15.5.1 分布式应用的作用 418
15.5.2 DCOM的结构 419
15.5.3 部件和复用 420
15.5.4 位置独立性 420
15.6 EJB技术 421
15.7 本课回顾和网络关键词 422
第16课 C语言程序设计范例总结 423
16.1 本课学习目标 423
16.2 求和和求积问题 423
16.2.1 计算数列求和 424
16.2.2 π的计算 425
16.2.3 定积分计算 427
16.3 遍历问题 428
16.3.1 字符统计问题 428
16.3.2 加密计算 429
16.3.3 素数问题 430
16.3.4 水仙花数/完数问题 431
16.3.5 百钱买百鸡问题 433
16.4 迭代问题 434
16.4.1 二分法迭代 434
16.4.2 牛顿迭代 436
16.5 排序问题 437
16.5.1 直接插入排序 438
16.5.2 起泡法排序 439
16.5.3 选择排序 440
16.6 查找问题 441
16.6.1 顺序查找 442
16.6.2 折半查找 442
16.7 递归问题 443
16.7.1 折半查找 443
16.7.2 树的遍历 445
16.8 字符串处理 447
16.9 矩阵运算 448
16.10 本课回顾和网络关键词 450
第17课 C语言高级编程技术 451
17.1 本课学习目标 451
17.2 高级编程技术概述 451
17.3 文本的屏幕输出和键盘输入 452
17.3.1 文本的屏幕输出 452
17.3.2 键盘输入 459
17.3.3 应用实例 461
17.4 图形显示方式和鼠标输入 464
17.4.1 图形模式的初始化 464
17.4.2 清屏和恢复显示方式的函数 467
17.4.3 独立图形运行程序的建立 468
17.4.4 基本绘图函数 469
17.4.5 画线的线型函数 473
17.4.6 颜色控制函数 476
17.4.7 封闭图形的填色函数及有关画图函数 481
17.4.8 图形窗口函数 484
17.4.9 图形方式下的文本输出函数 485
17.5 菜单设计 489
17.5.1 实现下拉式菜单 489
17.5.2 实现弹出式菜单 494
17.6 网络编程基础 499
17.6.1 常用协议报头 499
17.6.2 Winsock基础 503
17.7 本课回顾和网络关键词 506
第3篇 综合应用篇 509
第18课 俄罗斯方块游戏 509
18.1 游戏功能描述 509
18.2 游戏总体设计 510
18.2.1 功能模块设计 510
18.2.2 数据结构设计 512
18.2.3 构成函数介绍 514
18.3 游戏具体实现 515
18.3.1 预处理 515
18.3.2 主函数 518
18.3.3 初始化界面处理 521
18.3.4 时钟中断处理 522
18.3.5 成绩、速度和帮助处理 522
18.3.6 满行处理 523
18.3.7 方块显示和消除处理 526
18.3.8 游戏方块操作判断处理 528
第19课 Ping网络项目设计 531
19.1 系统功能描述 531
19.2 系统总体设计 532
19.2.1 功能模块设计 532
19.2.2 数据结构设计 534
19.2.3 构成函数介绍 535
19.3 系统具体实现 536
19.3.1 预处理 536
19.3.2 初始化处理 538
19.3.3 控制模块 539
19.3.4 数据报解读处理 541
19.3.5 Ping测试处理 543
19.3.6 主函数 546
第20课 学生成绩管理系统 549
20.1 系统总体描述 549
20.1.1 项目开发的目标 549
20.1.2 项目提出的意义 549
20.1.3 系统功能描述 550
20.2 系统总体设计 551
20.2.1 功能模块设计 551
20.2.2 数据结构设计 554
20.2.3 构成函数介绍 554
20.3 系统具体实现 556
20.3.1 预处理 556
20.3.2 主函数main 557
20.3.3 系统主菜单函数 558
20.3.4 表格显示信息 559
20.3.5 信息查找定位 560
20.3.6 格式化输入数据 561
20.3.7 增加学生记录 561
20.3.8 查询学生记录 563
20.3.9 删除学生记录 564
20.3.10 修改学生记录 565
20.3.11 插入学生记录 566
20.3.12 统计学生记录 568
20.3.13 排序处理 568
20.3.14 存储学生信息 570