第一篇 基本C语言编程精要 3
第1章 C语言标准及常用编译器介绍 3
1.1 C语言标准介绍 3
1.1.1 经典C语言 3
1.1.2 C89 3
1.1.3 C99 3
1.2 Turbo C 2.0编程环境及常用操作简介 4
1.2.1 TC的安装和配置 4
1.2.2 TC的调用 5
1.2.3 在TC中编辑、运行程序并查看结果 6
1.2.4 在DOS命令行中运行程序 6
1.2.5 在TC中调试程序 7
1.2.6 多文件程序的创建和运行 8
1.3 Visual C++ 6.0编程环境及常用操作简介 8
1.3.1 工程及源文件的建立 8
1.3.2 程序的编译、连接和运行 11
1.3.3 程序的调试 11
习题1 13
第2章 输入输出 14
2.1 printf()和scanf()的常见问题 14
2.1.1 printf()函数 14
2.1.2 scanf()函数 15
2.2 输入数据时的回车换行问题 18
2.3 输出时常用的几个函数 19
2.3.1 clrscr() 19
2.3.2 getch()和getche() 19
2.4 输入输出重定向 20
习题2 22
第3章 程序的流程控制 25
3.1 选择结构 25
3.1.1 if语句和if-else语句 25
3.1.2 嵌套的if语句 26
3.1.3 if语句常见错误 28
3.1.4 if语句中的短路效应 32
3.1.5 switch语句 33
3.1.6 选择结构程序举例 35
3.2 循环结构 38
3.2.1 3种循环语句 38
3.2.2 计数器控制循环和其他条件控制循环 39
3.2.3 break和continue 40
3.2.4 循环结束时循环变量的值 42
3.2.5 循环举例 43
习题3 46
第4章 数组与指针 48
4.1 数组的由来及数组的元素 48
4.1.1 一维数组的由来及一维数组的元素 48
4.1.2 多维数组的由来及多维数组的元素 48
4.1.3 使用数组时的注意事项 49
4.2 指针变量及其应用 50
4.2.1 指针变量的定义、赋值和使用 50
4.2.2 指针变量的类型及运算 52
4.3 数组名的指针类型 53
4.3.1 数组名指向的对象 53
4.3.2 用数组名表示数组元素 55
4.4 用指针变量处理数组 56
4.4.1 用指向变量的指针变量处理数组 56
4.4.2 用指向数组的指针变量处理数组 59
4.4.3 用指针变量处理数组时的类型问题 60
4.5 不同场合下使用变量的方法 61
4.5.1 简单变量 61
4.5.2 下标变量 63
习题4 65
第5章 函数 67
5.1 函数的定义 67
5.1.1 函数定义的格式 67
5.1.2 函数的返回类型 68
5.1.3 函数参数的设置 70
5.2 函数的调用 72
5.2.1 函数调用前的声明 72
5.2.2 函数调用的方式 73
5.3 函数调用时的参数传递 74
5.4 地址作函数参数 76
5.4.1 什么时候传地址 76
5.4.2 变量的地址作参数 76
5.4.3 数组名作参数 78
5.4.4 不再用全局变量 81
5.4.5 地址作参数是单向传递还是双向传递 83
5.5 递归函数 84
5.5.1 递归的条件 84
5.5.2 递归与迭代 85
5.6 函数编程的常见错误 86
习题5 87
第6章 文件 89
6.1 文件的概念和文件的种类 89
6.1.1 文件的范畴 89
6.1.2 文件中存储数据的两种方式 89
6.1.3 文件的种类 90
6.1.4 文件操作的两个层面及缓冲区的概念 90
6.2 文件类型指针 91
6.3 文件的打开和关闭 93
6.3.1 文件的打开 93
6.3.2 文件的关闭 97
6.4 文件的读写 98
6.4.1 常用读写函数 98
6.4.2 读写指针的移动和定位 99
6.4.3 两个与当前位置指针有关的函数 99
6.4.4 文件读写的例子 101
习题6 103
第7章 变量和字符处理的几个问题 105
7.1 与变量有关的几个问题 105
7.1.1 变量的本质 105
7.1.2 同名变量的分辨 106
7.1.3 变量赋初值及初值问题 107
7.2 实型变量的存储及常见问题 108
7.2.1 实型变量的存储方式 108
7.2.2 实型变量的常见使用问题 110
7.3 字符处理的几个问题 111
7.3.1 结束标志用空字符还是换行符 111
7.3.2 循环次数是数组大小还是实际字符个数 112
习题7 112
第二篇 扩展C编程技术 117
第8章 内存管理机制与TC编译模式 117
8.1 寄存器和伪变量 117
8.1.1 微处理器中的寄存器 117
8.1.2 段寄存器及其用途 118
8.1.3 伪变量 119
8.2 内存的寻址模式 119
8.2.1 段式内存管理机制和实模式寻址 119
8.2.2 保护模式寻址 120
8.2.3 默认的段和偏移寄存器 121
8.2.4 近程指针与远程指针 121
8.2.5 与地址操作有关的几个函数(宏) 122
8.3 TC的编译模式 124
8.3.1 微模式 124
8.3.2 小模式 124
8.3.3 中模式 125
8.3.4 紧凑模式 125
8.3.5 大模式 125
8.3.6 巨模式 125
习题8 125
第9章 BIOS和DOS调用 126
9.1 概述 126
9.2 中断和中断向量表 127
9.2.1 中断 127
9.2.2 中断向量表 127
9.3 BIOS调用 128
9.3.1 BIOS调用简介 128
9.3.2 BIOS调用的方法和例子 129
9.4 DOS调用 130
9.4.1 DOS调用简介 130
9.4.2 DOS调用的方法和例子 131
9.5 BIOS和DOS系统调用函数 134
9.5.1 int86() 134
9.5.2 int86x() 136
9.5.3 intdos() 137
9.5.4 intdosx() 137
9.5.5 intr() 138
习题9 139
第10章 I/O接口的输入输出 140
10.1 I/O端口地址及编址方式 140
10.1.1 I/O端口的地址 140
10.1.2 I/O端口的编址 140
10.2 C语言用于I/O接口输入输出的函数 142
10.2.1 接口输入函数 142
10.2.2 接口输出函数 142
10.3 I/O接口输入输出举例 143
习题10 146
第11章 中断服务程序 147
11.1 硬中断和软中断 147
11.1.1 硬中断 147
11.1.2 软中断 148
11.2 中断向量表的写入 148
11.3 中断服务的实现 148
11.3.1 中断服务程序的编写 148
11.3.2 中断服务程序的安装 149
11.3.3 中断服务程序的激活 150
11.4 中断服务程序举例 151
习题11 155
第12章 C作图与图形处理 156
12.1 图形系统的初始化及基本框架 156
12.1.1 初始化图形系统 156
12.1.2 图形系统的关闭以及两种显示方式的转换 157
12.1.3 程序的基本框架及实例 158
12.2 图形系统中的像素与坐标 159
12.2.1 像素及坐标 159
12.2.2 像素函数及像素的颜色 159
12.3 常用图形函数 160
12.3.1 画点函数 160
12.3.2 有关画图坐标位置的函数 160
12.3.3 画线函数 161
12.3.4 画圆、椭圆和扇形函数 161
12.3.5 画矩形和条形图函数 162
12.3.6 颜色控制函数 162
12.3.7 线形控制函数 163
12.3.8 填充函数以及与填充有关的函数 164
12.4 图形方式下的文本输出函数 165
12.5 屏幕操作函数及动画基本知识 166
12.5.1 常用的屏幕操作函数 166
12.5.2 C语言动画设计的常用方法 167
12.5.3 动画示例 167
12.6 VRAM的读写 170
12.6.1 屏幕图形与VRAM的关系 170
12.6.2 VGA视频存储器的位面结构 170
12.6.3 将VRAM位面信息存入文件 171
12.6.4 将文件图像信息写入VRAM位面 172
习题12 174
第13章 键盘和鼠标操作 175
13.1 键盘操作 175
13.1.1 键盘的工作原理 175
13.1.2 键盘缓冲区 176
13.1.3 键盘处理函数 176
13.2 鼠标操作 177
13.2.1 鼠标的INT 33H功能调用 178
13.2.2 鼠标主要操作函数 180
13.2.3 改变鼠标形状 182
13.2.4 鼠标操作举例 184
习题13 187
第14章 汉字的显示与放大 188
14.1 汉字的编码 188
14.1.1 区位码 188
14.1.2 国标码 189
14.1.3 机内码 189
14.1.4 字形码 190
14.1.5 地址码 190
14.2 用作图方式显示和放大汉字 191
14.2.1 汉字的显示 191
14.2.2 汉字的放大 193
14.3 直接写VRAM法显示汉字 195
14.3.1 利用定序器直接写VRAM 195
14.3.2 用方式寄存器和位屏蔽寄存器直接写VRAM 198
习题14 201
第15章 数据结构基础 202
15.1 线性表 202
15.1.1 线性表的概念 202
15.1.2 线性表的存储结构 202
15.2 顺序表的操作 203
15.2.1 空顺序表的建立 203
15.2.2 求顺序表中某元素的序号 203
15.2.3 顺序表元素的插入 204
15.2.4 顺序表元素的删除 204
15.3 链表及操作 205
15.3.1 线性链表的表示 205
15.3.2 线性链表的操作 206
15.3.3 循环链表 209
15.3.4 双向链表 209
15.4 栈 210
15.4.1 栈的概念 210
15.4.2 栈的实现 210
15.5 队列 214
15.5.1 队列的概念 214
15.5.2 队列的实现和操作 215
习题15 217
第三篇 实例解析 221
第16章 基本编程实例 221
实例1 利用输入重定向从文件中读数据 221
实例2 火车托运费的计算 222
实例3 找小偷 223
实例4 判断整数能被3、5、7中的哪些数整除 224
实例5 找假货 225
实例6 计算某天是一年中的第几天 227
实例7 国民生产总值多少年翻番 227
实例8 兑换硬币 228
实例9 里程碑上的对称数 229
实例10 辗转赋值法求表达式的值 230
实例11 随机数的生成 231
实例12 打印魔方阵 233
实例13 猜数游戏 234
实例14 二维数组的排序输出 235
实例15 寻找假币 236
实例16 打印乘法口诀 237
实例17 计算矩阵相乘 238
实例18 向排好序的数组中插入数据 239
实例19 数组作计数器 240
实例20 判断字符串是否回文 241
实例21 找素数 242
实例22 字符串转换为实数 243
实例23 任意进制数的转换 245
实例24 利用位运算求整数的原码或补码 246
实例25 字符串逆置 246
实例26 用递归法逆序输出字符串 247
实例27 用递归法对数组排序 247
实例28 向主调函数中的局部变量存数据 248
实例29 通过指针变量使函数“返回”两个值 249
实例30 利用位运算对字母进行大小写转换 250
实例31 用结构体处理学生成绩 251
实例32 报数游戏 252
实例33 带参数的main函数 253
实例34 时钟程序 254
实例35 简单的计算器(一) 256
实例36 简单的计算器(二) 258
第17章 算法与数据结构实例 262
实例1 冒泡法排序 262
实例2 选择法排序 263
实例3 插入排序 264
实例4 储油问题 265
实例5 0-1背包问题 267
实例6 顺序表的插入和删除 270
实例7 链表操作(一) 272
实例8 链表操作(二) 277
实例9 链表的逆置 279
实例10 约瑟夫环 280
实例11 双链表的操作 283
实例12 多项式的表示和计算 287
实例13 十进制数转换为二进制数 290
实例14 检查括号配对 292
实例15 八皇后问题 294
实例16 迷宫问题 296
实例17 骑士巡游问题 299
实例18 农夫过河问题 302
实例19 表达式计算 308
第18章 趣味数学和数值计算实例 315
实例1 马克思手稿中的数学题 315
实例2 新郎和新娘配对 316
实例3 分糖果 317
实例4 泊松的分酒问题 319
实例5 求π的近似算法 321
实例6 角谷猜想 323
实例7 四方定量 324
实例8 卡布列克数 325
实例9 求解线性方程 327
实例10 求积分 331
实例11 超长整数的加法 332
第19章 图形编程实例 338
实例1 画点及画线函数 338
实例2 绘制圆、圆弧和椭圆 339
实例3 画矩形和条形的函数 340
实例4 设置背景色和前景色 340
实例5 设置线条类型 341
实例6 设置填充类型和填充颜色 342
实例7 图形方式下输出文本 343
实例8 绘制时钟 343
实例9 跳动小球 345
实例10 用直方图显示学生成绩分布 347
实例11 用圆饼图显示比例 349
实例12 相向运动的球 350
实例13 模拟满天星 351
实例14 正弦曲线 352
实例15 卫星环绕地球运动 353
实例16 按钮的制作 355
实例17 火箭发射演示 358
实例18 火焰动画制作 360
第20章 系统和文件操作实例 364
实例1 获取并修改当前驱动器 364
实例2 建立目录 365
实例3 选择当前目录 366
实例4 删除目录 366
实例5 获得当前目录 367
实例6 建立文件 368
实例7 打开文件 369
实例8 读文件 370
实例9 写文件 371
实例10 关闭文件 372
实例11 删除文件 373
实例12 文件改名 374
实例13 读取CMOS信息 375
实例14 文件连接 376
实例15 文件读写操作 377
第21章 趣味游戏实例 379
实例1 俄罗斯方块 379
实例2 贪吃蛇游戏 381
实例3 潜艇大战 383
实例4 搬运工 384
实例5 商人过河游戏 387
实例6 五子棋 389
实例7 扫雷 389
第22章 综合应用实例 392
实例1 数据文件的读取及图形显示 392
实例2 数独游戏的求解 399
实例3 通信录管理系统 404
附录A 常用的视频BIOS调用 408
附录B INT 21H常用功能调用一览表 414
附录C ASCII码表 419
参考文献 421