如何学习C语言 1
第1篇 基础知识 2
第1章 步入C的世界——Hello C 2
1.1 了解C语言 3
1.1.1 C的历史 3
1.1.2 C的特点 4
1.1.3 为什么要用C 5
1.2 C编程前的准备——C常用开发环境 5
1.2.1 认识Visual C++ 6.0 6
1.2.2 认识Turbo C 2.0 7
1.3 开始C编程——第1个C程序 8
1.3.1 程序编写及运行流程 8
1.3.2 在Visual C++ 6.0中开发C程序 9
1.3.3 在Turbo C中开发C程序 11
1.4 C程序的组成 13
1.4.1 完整的C程序 13
1.4.2 #include的秘密 14
1.4.3 程序的入口——main函数 14
1.4.4 数据集装箱——常量和变量 15
1.4.5 何以输出程序结果——输出函数 16
1.4.6 注释 16
1.4.7 代码的规矩 17
1.5 练一练 18
1.6 跟我上机 19
第2章 不变的和变的箱子——常量与变量 20
2.1 标识符和关键字 21
2.1.1 标识符 21
2.1.2 关键字 21
2.2 常量 22
2.2.1 什么是常量 22
2.2.2 数值常量 23
2.2.3 字符常量 24
2.2.4 字符串常量 25
2.2.5 符号常量 26
2.3 变量 27
2.3.1 什么是变量 27
2.3.2 变量的声明 29
2.3.3 变量的定义 30
2.3.4 变量的赋值和初始化 31
2.4 综合应用——计算学生平均成绩 32
2.5 练一练 35
2.6 跟我上机 36
第3章 数据的种类——数据类型 37
3.1 计算机如何识数——数制 38
3.1.1 二进制 38
3.1.2 八进制 39
3.1.3 十六进制 39
3.1.4 数制间的转换 40
3.2 整型 41
3.3 字符型 43
3.4 浮点型 45
3.5 类型转换 47
3.5.1 隐式转换 48
3.5.2 显式转换 49
3.6 综合应用——类型转换 50
3.7 练一练 51
3.8 跟我上机 52
第4章 C世界中的加、减、乘、除——运算符和表达式 53
4.1 C中的运算符和表达式 54
4.1.1 运算符 54
4.1.2 表达式 55
4.1.3 优先级与结合性 55
4.2 算术运算符和表达式 55
4.2.1 算术运算符 55
4.2.2 算术表达式 56
4.2.3 算术运算符的优先级和结合性 56
4.2.4 应用举例 57
4.3 关系运算符和表达式 59
4.3.1 关系运算符 59
4.3.2 关系表达式 59
4.3.3 关系运算符的优先级和结合性 60
4.3.4 应用举例 60
4.4 逻辑运算符和表达式 61
4.4.1 逻辑运算符 61
4.4.2 逻辑表达式 61
4.4.3 逻辑运算符的优先级和结合性 62
4.4.4 应用举例 62
4.5 条件运算符和表达式 64
4.6 赋值运算符和表达式 65
4.6.1 赋值运算符 65
4.6.2 赋值表达式 66
4.6.3 赋值运算符的优先级与结合性 67
4.6.4 应用举例 67
4.7 自增、自减运算符 69
4.8 逗号运算符和表达式 70
4.9 运算符的优先级 71
4.10 综合应用——计算函数的结果 72
4.11 练一练 73
4.12 跟我上机 74
第5章 C程序的流程——程序控制结构和语句 75
5.1 程序流程概述 76
5.2 语句 76
5.2.1 基本赋值语句 76
5.2.2 表达式语句 77
5.2.3 基本输入/输出语句 77
5.2.4 控制语句 80
5.2.5 空语句和复合语句 80
5.3 顺序结构与语句 81
5.4 选择结构与语句 82
5.4.1 选择结构 83
5.4.2 单分支选择结构——if语句 83
5.4.3 双分支选择结构——if-else语句 85
5.4.4 多分支选择结构——if-else的嵌套形式 87
5.4.5 多分支选择结构——switch语句 91
5.5 循环结构与语句 94
5.5.1 循环结构 94
5.5.2 当型循环语句——for语句 95
5.5.3 当型循环语句——while语句 100
5.5.4 直到型循环语句——do-while语句 102
5.5.5 循环的嵌套 104
5.6 转向语句 108
5.6.1 goto语句 108
5.6.2 break语句 110
5.6.3 continue语句 112
5.7 综合应用——简单计算器 114
5.8 练一练 116
5.9 跟我上机 117
第6章 用户与计算机的交互——输入和输出 118
6.1 标准输入输出 119
6.2 格式化输入输出 119
6.2.1 格式化输出函数——printf() 120
6.2.2 格式控制字符 121
6.2.3 格式化输入函数——scanf() 126
6.3 字符输入输出 128
6.3.1 字符输出函数——putchar() 129
6.3.2 字符输入函数——getchar() 130
6.4 字符串输入输出 131
6.4.1 字符串输出函数——puts() 131
6.4.2 字符串输入函数——gets() 131
6.5 练一练 132
6.6 跟我上机 133
第7章 数组与字符串 134
7.1 数组概述 135
7.2 一维数组 135
7.2.1 一维数组的定义 135
7.2.2 一维数组的初始化 138
7.2.3 一维数组元素的操作 139
7.2.4 数组作为参数传递 142
7.2.5 一维数组的应用举例 145
7.3 二维数组 147
7.3.1 二维数组的定义 147
7.3.2 二维数组的初始化 148
7.3.3 二维数组元素的操作 149
7.3.4 二维数组的应用举例 149
7.4 多维数组 151
7.5 字符串 152
7.5.1 字符串和字符数组 153
7.5.2 字符串的输入输出 154
7.5.3 字符串应用举例 155
7.6 综合应用——杨辉三角 157
7.7 练一练 159
7.8 跟我上机 159
第8章 程序的灵魂——算法与流程图 160
8.1 算法基础 161
8.1.1 算法的概念 161
8.1.2 算法的特性 162
8.1.3 简单算法举例——解方程 162
8.2 流程图的基础 164
8.2.1 流程图中的元素及含义 165
8.2.2 流程图的绘制 166
8.3 如何表示一个算法 168
8.3.1 用自然语言表示算法 168
8.3.2 用流程图表示算法 170
8.3.3 用传统流程图表示3种基本结构 173
8.3.4 用N-S图表示算法 174
8.3.5 用伪代码表示算法 177
8.3.6 用计算机语言表示算法 177
8.4 结构化程序设计方法 178
8.5 综合应用——求一元二次方程的根 179
8.6 练一练 182
8.7 跟我上机 182
第2篇 核心技术 184
第9章 函数 184
9.1 函数的概述 185
9.1.1 什么是函数 185
9.1.2 函数的分类 186
9.2 函数的定义 187
9.3 函数的返回值及类型 190
9.3.1 函数的返回值 190
9.3.2 函数的类型 192
9.4 函数的参数及传递方式 195
9.4.1 函数的参数 195
9.4.2 函数参数的传递方式 196
9.5 函数的调用 198
9.5.1 函数调用方式 199
9.5.2 函数的声明 201
9.5.3 函数的嵌套调用 202
9.5.4 函数的递归调用 204
9.6 内部函数和外部函数 209
9.6.1 内部函数 209
9.6.2 外部函数 210
9.7 Main函数 212
9.8 综合应用——用截弦法求方程的根 213
9.9 练一练 215
9.10 跟我上机 216
第10章 函数中的变量 217
10.1 局部变量与全局变量 218
10.1.1 局部变量 218
10.1.2 全局变量 220
10.2 变量的存储类别 223
10.2.1 自动类型(auto) 223
10.2.2 寄存器类型(register) 224
10.2.3 静态类型(static) 225
10.2.4 外部类型(extern) 227
10.3 综合应用——计算该日是该年的第几天 229
10.4 练一练 230
10.5 跟我上机 231
第11章 内存的快捷方式——指针 232
11.1 指针概述 233
11.1.1 内存地址 233
11.1.2 内存和指针 234
11.2 指针变量 235
11.2.1 初识指针变量 235
11.2.2 使用指针变量 238
11.2.3 指针的运算 243
11.3 指针与函数 245
11.3.1 指向函数的指针 245
11.3.2 返回指针的函数 246
11.4 void指针类型 248
11.5 综合应用——创建简单链表 249
11.6 练一练 251
11.7 跟我上机 252
第12章 指针的深入研究——指针进阶 253
12.1 指针与数组 254
12.1.1 指针与数组 254
12.1.2 数组名作为指针 256
12.1.3 指针与多维数组 259
12.1.4 指针与数组参数 262
12.2 指针与字符串 264
12.2.1 使用指针创建字符串 264
12.2.2 使用指针处理字符串 265
12.2.3 指针的指针 269
12.2.4 指针数组和数组指针 270
12.3 综合应用——报数游戏 271
12.4 练一练 272
12.5 跟我上机 274
第13章 文件 275
13.1 文件概述 276
13.1.1 文件类型 276
13.1.2 C如何操作文件——文件指针 276
13.1.3 文件缓冲区 277
13.2 文件的打开和关闭 277
13.2.1 文件的打开——fopen()函数 277
13.2.2 文件的关闭——fclose()函数 279
13.2.3 文件结束检测——feof()函数 279
13.3 文件的顺序读写 280
13.3.1 文本文件中字符的输入/输出 280
13.3.2 文本文件中字符串的输入/输出 283
13.3.3 格式化输入/输出 285
13.3.4 二进制文件的输入输出——数据块读写 287
13.4 文件的随机读写 289
13.5 综合应用——文件操作 290
13.6 练一练 292
13.7 跟我上机 293
第14章 C语言如何被计算机识别——编译与预处理指令 294
14.1 什么是预处理指令 295
14.2 宏定义 295
14.2.1 变量式宏定义 296
14.2.2 宏定义嵌套 301
14.2.3 宏定义范围 302
14.2.4 函数式宏定义 303
14.2.5 多行宏定义 307
14.3 文件包含 308
14.3.1 什么是文件包含 308
14.3.2 使用文件包含 308
14.3.3 文件包含说明 310
14.4 条件编译 311
14.4.1 条件编译形式 311
14.4.2 调试中使用条件编译 315
14.4.3 文件嵌套包含和条件编译 316
14.5 assert()宏 316
14.6 综合应用——编译与预处理指令 317
14.7 练一练 319
14.8 跟我上机 320
第15章 库函数 321
15.1 标准C库函数 322
15.2 数学函数 322
15.2.1 绝对值函数 322
15.2.2 幂函数和开平方函数 323
15.2.3 指数函数和对数函数 324
15.2.4 三角函数 324
15.2.5 取整函数和取余函数 325
15.3 字符串处理函数 326
15.3.1 字符串长度函数 326
15.3.2 字符串连接函数 327
15.3.3 字符串复制函数 328
15.3.4 字符串比较函数 329
15.3.5 字符串查找函数 330
15.3.6 字符串填充函数 331
15.4 字符处理函数 332
15.4.1 字符类型判断函数 332
15.4.2 字符大小写转换函数 334
15.5 转换和存储管理函数 334
15.5.1 转换函数 334
15.5.2 存储管理函数 335
15.6 随机函数 337
15.6.1 初识随机函数 337
15.6.2 使用随机函数 338
15.7 日期和时间处理函数 339
15.8 诊断函数 341
15.9 命令行参数 342
15.10 其他函数 343
15.10.1 exit()函数 343
15.10.2 qsort()函数 344
15.11 综合应用——猜数字游戏 346
15.12 练一练 348
15.13 跟我上机 349
第16章 合理利用内存——位运算 350
16.1 二进制数 351
16.1.1 二进制 351
16.1.2 无符号数和有符号数 351
16.2 位运算符 352
16.2.1 按位与运算符 352
16.2.2 按位或运算符 353
16.2.3 按位异或运算符 353
16.2.4 按位取反运算符 354
16.2.5 左移运算符 354
16.2.6 右移运算符 355
16.2.7 位运算赋值运算符 356
16.2.8 位运算应用 357
16.3 位域 360
16.4 综合应用——数制转换 361
16.5 练一练 362
16.6 跟我上机 363
第17章 结构体和联合体 364
17.1 结构体 365
17.1.1 结构体类型 365
17.1.2 定义结构体变量 366
17.1.3 初始化结构体变量 368
17.1.4 结构体变量的引用 368
17.2 结构体数组 370
17.2.1 定义结构体数组 370
17.2.2 初始化结构体数组 372
17.2.3 结构体数组元素的引用 373
17.3 结构体指针 374
17.3.1 定义结构体指针 374
17.3.2 初始化结构体指针 375
17.3.3 使用指针访问成员 375
17.3.4 指向结构体数组的指针 377
17.4 结构体与函数 378
17.4.1 结构体作为函数的参数 378
17.4.2 结构体作为函数的返回值 381
17.5 联合体 382
17.5.1 联合体类型 382
17.5.2 联合体变量的定义 383
17.5.3 联合体变量的初始化 384
17.5.4 联合体变量的引用 386
17.6 结构体和联合体的区别与联系 388
17.7 综合应用——计算学生成绩 388
17.8 练一练 390
17.9 跟我上机 391
第18章 数据管理者——数据结构 392
18.1 数据结构概述 393
18.2 线性表 394
18.2.1 顺序表 394
18.2.2 单链表 398
18.3 栈 405
18.3.1 栈的基本运算 405
18.3.2 顺序栈的类型定义 406
18.3.3 链式栈的类型定义 406
18.4 队列 407
18.4.1 队列的基本运算 407
18.4.2 顺序队列类型定义 408
18.4.3 链队列类型定义 408
18.5 二叉树 408
18.6 查找 409
18.6.1 顺序查找 410
18.6.2 折半查找 412
18.7 排序 414
18.7.1 冒泡排序法 414
18.7.2 选择排序法 416
18.7.3 插入排序法 417
18.8 综合应用——反转链表 419
18.9 练一练 421
18.10 跟我上机 422
第3篇 趣味题解 424
第19章 哥德巴赫猜想 424
19.1 问题描述 425
19.2 问题分析及实现 425
19.2.1 问题分析 425
19.2.2 问题实现 425
19.2.3 程序运行 427
19.3 开发过程常见问题及解决 428
第20章 猴子选大王游戏 429
20.1 问题描述 430
20.2 问题分析及实现 430
20.2.1 问题分析 430
20.2.2 问题实现 430
20.2.3 程序运行 432
20.3 开发过程常见问题及解决 432
第21章 迷宫求解 433
21.1 问题描述 434
21.2 问题分析及实现 434
21.2.1 问题分析 434
21.2.2 问题实现 434
21.2.3 程序运行 438
21.3 开发过程常见问题及解决 438
第22章 背包问题求解 439
22.1 问题描述 440
22.2 问题分析及实现 440
22.2.1 问题分析 440
22.2.2 问题实现 440
22.2.3 程序运行 442
22.3 开发过程常见问题及解决 443
第23章 火车车厢重排 444
23.1 问题描述 445
23.2 问题分析及实现 445
23.2.1 问题分析 445
23.2.2 问题实现 445
23.2.3 程序运行 448
23.3 开发过程常见问题及解决 448
第24章 哈夫曼编码的实现 449
24.1 问题描述 450
24.2 问题分析及实现 450
24.2.1 问题分析 450
24.2.2 问题实现 450
24.2.3 程序运行 452
24.3 开发过程常见问题及解决 453
第25章 八皇后问题的实现 454
25.1 问题描述 455
25.2 问题分析及实现 455
25.2.1 问题分析 455
25.2.2 问题实现 455
25.2.3 程序运行 457
25.3 开发过程常见问题及解决 458
第26章 商人过河游戏 459
26.1 问题描述 460
26.2 问题分析及实现 460
26.2.1 问题分析 460
26.2.2 问题实现 460
26.2.3 程序运行 464
26.3 开发过程常见问题及解决 464
第27章 K阶斐波那契序列的实现 465
27.1 问题描述 466
27.2 问题分析及实现 466
27.2.1 问题分析 466
27.2.2 问题实现 466
27.2.3 程序运行 468
27.3 开发过程常见问题及解决 468
第28章 最短路径的实现 469
28.1 问题描述 470
28.2 问题分析及实现 470
28.2.1 问题分析 470
28.2.2 问题实现 470
28.2.3 程序运行 472
28.3 开发过程常见问题及解决 472
第4篇 项目实战 474
第29章 项目实战前的几点忠告——项目规划 474
29.1 项目开发流程 475
29.1.1 策划阶段 475
29.1.2 需求分析阶段 476
29.1.3 开发阶段 476
29.1.4 编码阶段 476
29.1.5 系统测试阶段 477
29.1.6 系统验收阶段 477
29.1.7 系统维护阶段 477
29.2 项目开发团队 477
29.2.1 项目团队组成 477
29.2.2 项目团队要求 478
29.3 项目的实际运作 478
29.4 项目规划常见问题及解决 479
29.4.1 如何满足客户需求 479
29.4.2 如何控制项目进度 479
29.4.3 如何控制项目预算 479
第30章 通讯录 480
30.1 开发背景 481
30.2 需求及功能分析 481
30.2.1 总体功能分析 481
30.2.2 功能模块分析 482
30.3 系统功能的实现 482
30.3.1 系统选择菜单的实现 482
30.3.2 增加联系人功能的实现 483
30.3.3 删除联系人功能的实现 484
30.3.4 查找联系人模块的实现 485
30.3.5 插入联系人模块的实现 486
30.3.6 保存联系人文件模块的实现 486
30.3.7 从文件加载联系人信息模块的实现 487
30.3.8 显示所有联系人信息模块的实现 488
30.4 系统运行 488
30.5 开发过程常见问题及解决 489
第31章 图书管理系统 490
31.1 开发背景 491
31.2 需求及功能分析 491
31.2.1 总体功能分析 491
31.2.2 各模块功能分析 491
31.3 系统功能的实现 492
31.3.1 建立相关类及属性 492
31.3.2 系统选择菜单的实现 493
31.3.3 借书功能的实现 495
31.3.4 还书功能的实现 496
31.3.5 图书上架功能的实现 498
31.3.6 图书下架功能的实现 500
31.4 系统运行 502
31.5 开发过程常见问题及解决 503
第32章 信息管理系统 504
32.1 简易网络通信系统 505
32.1.1 系统分析 505
32.1.2 功能分析及实现 505
32.1.3 开发常见问题及解决 509
32.2 学生成绩管理系统 509
32.2.1 系统分析 509
32.2.2 功能分析及实现 510
32.2.3 开发常见问题及解决 519
32.3 酒店管理系统 519
32.3.1 系统分析 520
32.3.2 功能分析及实现 520
32.3.3 开发常见问题及解决 526
第5篇 王牌资源 527
王牌资源一览 527
王牌1 C语言标准库函数查询手册(光盘中) 535
索引 536
A 544
abort 544
abs 544
absread 545
abswrite 545
acos 545
asctime 546
asin 546
assert 547
atan 547
atexit 547
atof 548
atoi 548
atol 549
B 550
bcd 550
biosdisk 550
biosprint 551
bsearch 551
C 552
calloc 552
ceil 552
cgets 553
chdir 553
_chmod 553
chmod 554
clearer 554
clock 554
close 555
closegraph 555
cos 555
ctime 556
ctrlbrk 556
D 557
delay 557
disable 557
difftime 557
div 558
E 559
enable 559
exit 559
exp 559
F 561
fabs 561
farcalloc 561
farfree 562
farmalloc 562
farrealloc 562
fclose 563
fcloseall 563
feof 563
fgetc 564
fgets 564
fgetpos 565
fflush 565
floodfill 565
floor 566
fnmerge 566
fnsplit 566
fopen 567
fp_off 567
fprintf 568
fputc 568
fputs 568
fp_seg 569
free 569
freopen 570
frexp 570
fscanf 570
fseek 571
fsetpos 571
ftell 571
fwrite 572
G 573
gcvt 573
getc 573
getchar 573
getcurdir 574
getcwd 574
getdate 575
getdfree 575
getdisk 575
getenv 576
getimage 576
getmaxx 576
getmaxy 577
getpixel 577
getpsp 577
gettime 578
getvect 578
getx 579
gety 579
gmtime 579
I 581
imagesize 581
initgraph 581
inport 581
inportb 582
int86 582
int86x 583
intdos 583
intdosx 583
intr 584
isainum 584
isalpha 584
iscntrl 585
isdigit 585
isgraph 586
islower 586
isupper 586
itoa 587
K 588
kbhit 588
keep 588
L 589
labs 589
ldexp 589
ldiv 590
localtime 590
log 590
log10 591
longjmp 591
_lrotl 591
_lrotr 592
lseek 592
ltoa 593
M 594
malloc 594
mkdir 594
mblen 595
memchr 595
memcmp 595
memcpy 596
memmove 596
memset 597
mktemp 597
mk_fp 597
modf 598
movedata 598
O 599
_open 599
open 599
outport 600
outtextxy 600
P 601
peek 601
perror 601
pow 601
printf 602
putch 602
putchar 602
putenv 603
putimage 603
putpixel 604
puts 604
Q 604
qsort 604
R 606
_read 606
read 606
realloc 607
rectangle 607
remove 607
rename 608
restorecrtmode 608
rewind 609
rmdir 609
_rotl 609
_rotr 610
S 611
scanf 611
searchpath 611
setactivepage 612
setbuf 612
setcolor 612
setdisk 613
setgraphmode 613
setjmp 613
setlinestyle 614
setlocale 614
setvbuf 615
setvisualpage 615
signal 615
sin 616
sinh 616
sprintf 616
sqrt 617
srand 617
sscanf 617
strcmp 618
strcpy 618
strcspn 619
strerror 619
strlen 620
strncat 620
strncmp 620
strncpy 621
strrchr 621
strstr 622
strtok 622
strtoul 622
system 623
T 624
tan 624
time 624
tmpnam 625
tolower 625
toupper 625
U 627
ungetc 627
V 628
vfprintf 628
vprinff 628
vsprinff 629
W 630
wcstombs 630
wctomb 630
_write 631
write 631
王牌2 C语言常用查询手册(光盘中) 632
索引 633
头文件查询 634
#include<stdio.h> 634
#include<ctype.h> 635
#include<math.h> 636
#include<time.h> 637
#include<local.h> 637
#include<signal.h> 637
#include<stdarg.h> 638
#include<stdlib.h> 638
#include<string.h> 638
关键字查询 640
常用字符ASCII码查询 644
王牌3 C源码大放送(光盘中)源码01 文件加密解密源码02 人机猜数字源码03 青蛙交换源码04 大小写数字转换器源码05 仿真计算器源码06 推箱子游戏源码07 俄罗斯方块游戏源码08 贪吃蛇游戏源码09 扫雷游戏源码10 五子棋游戏王牌4 学习成果检测——本书【练一练】答案(光盘中) 648
王牌5 C程序员职业规划(光盘中) 665
王牌6 全国计算机等级考试二级C考试大纲及应试技巧(光盘中) 667
王牌7 C程序员面试技巧(光盘中) 675
王牌8 C常见面试题(光盘中) 677
王牌9 扫雷英雄榜——C常见错误及解决方案(光盘中) 693
王牌10 优秀程序员之路——C开发经验及技巧大汇总(光盘中) 707