图书简介
C语言具有高效、灵活和优雅等特点,至今仍是各类软体设计开发人员必修的基础课程。本书以循序渐进的方式全面详细地介绍了C语言,更以大量有趣生动的套用实例讲解了应用程式的设计,还以丰富多彩的例题和习题说明了学习使用C语言是件快乐的事情。
本书可作为高等学校理工科类专业C语言程式设计课程的教材或教学参考书,也可作为广大计算机爱好者学习套用C语言的自学参考书。
目录
第1章C语言导论 1
1.1第一个C语言程式 1
1.2套用举例:长度转换 2
1.3标识符 6
1.4while语句 7
1.5dowhile语句 10
1.6套用举例:计算所得税 11
1.7if语句 13
1.8深入介绍if语句 19
1.9输入和输出重定向 24
1.10档案 26
常见编程错误 27
编程练习 28
第2章变数、运算符和流程控制 30
2.1字元和整数 30
2.2浮点变数 38
2.3算术运算 42
2.4关係运算符、逻辑运算符和赋值运算符 46
2.5套用举例:统计测量 52
2.6for语句和逗号运算符 55
2.7运算符++和-- 58
2.8套用举例:列印条形图 61
常见编程错误 63
编程练习 64
第3章运算符和流程控制 67
3.1break和continue语句 67
3.2套用举例:产生素数 71
3.3switch语句 73
3.4goto语句和标号 79
3.5条件表达式 80
3.6套用举例:列印日曆 81
3.7强制类型转换 84
3.8运算符sizeof 85
3.9getchar和putchar 86
3.10位运算符 89
3.10.1位取反运算符 90
3.10.2位逻辑运算符 90
3.10.3位移位运算符 91
常见编程错误 95
编程练习 96
第4章函式和程式结构 98
4.1简介 98
4.1.1函式术语 99
4.1.2return语句 101
4.1.3函式声明 101
4.1.4main函式 103
4.1.5源档案中的函式 104
4.1.6函式和程式设计 105
4.2实际参数和形式参数 107
4.2.1形式参数和实际参数的匹配 108
4.2.2计算参数值的顺序 108
4.3传值调用 109
4.4套用举例:计算电阻 112
4.5变数的作用範围 116
4.6预处理器 117
4.6.1档案包含 118
4.6.2使用单个档案包含 119
4.6.3宏 119
4.6.4带参数的宏 121
4.6.5带参数的宏与函式的比较 121
4.6.6宏的便利性 123
4.6.7其余命令 123
4.7套用举例:模拟一个掷骰子游戏 129
4.8递归 135
4.9套用举例:递归拼贴 144
4.10参数数目可变的函式 151
常见编程错误 155
编程练习 159
第5章数组 164
5.1为何引入数组 164
5.2数组下标和单元偏移 164
5.2.1数组与指针 168
5.2.2sizeof运算符和数组 170
5.3套用举例:跟蹤和报告汽车销售情况 172
5.4字元型数组作为字元串 177
5.5套用举例:用给定的行长度格式化文本 181
5.6数组作为函式参数 183
5.7字元串处理函式 187
5.7.1strcat,strncat 187
5.7.2strcmp,strncmp 188
5.7.3strcpy,strncpy 190
5.7.4strlen 191
5.7.5strstr,strchr,strrchr 191
5.8套用举例:计算字元串的长度 196
5.9多维数组 196
5.9.1概述 196
5.9.2多维数组的方便性 197
5.9.3多维数组是由数组构成的数组 198
5.9.4多维数组的初始化 199
5.9.5多维数组用作参数 199
5.10套用举例:矩阵乘法 201
5.11套用举例:排序和查找 205
5.12套用举例:森林火势蔓延的模拟 210
常见编程错误 215
编程练习 217
第6章指针 224
6.1指针变数 224
6.1.1指针变数概述 224
6.1.2指针初始化 230
6.1.3对地址运算符的限制 231
6.2多级间接访问 233
6.3指针与数组 236
6.3.1字元指针与字元数组 237
6.3.2数组与指针的算术运算 239
6.3.3指针运算 242
6.3.4指向数组单元的指针的界 246
6.3.5数组和指针语法的等价性 247
6.3.6数组形式和指针形式的混合 247
6.4指针作为函式的参数 252
6.5套用举例:反转字元串 261
6.6套用举例:并行计算 264
6.7指针与多维数组 272
6.8命令行参数 275
6.9指向函式的指针 277
6.10套用举例:对排序算法进行比较 279
常见编程错误 283
编程练习 285
第7章存储类别和类型限定 290
7.1单一源档案中的存储类别:auto,extern,static 290
7.1.1auto 290
7.1.2extern 291
7.1.3static 292
7.2套用举例:文本分页 297
7.3存储类别register 300
7.4多个源档案中的存储类别 301
7.5套用举例:互动式计算器 306
7.6块的嵌套 312
7.7函式存储类别 315
7.8类型限定符:const和volatile 317
7.8.1类型限定符的用法 317
7.8.2const 318
7.8.3const变数和宏 319
7.8.4const的局限性 320
7.8.5const指针参数 320
7.8.6volatile 321
7.8.7类型限定符的组合用法 321
7.8.8类型限定符和编译器的最佳化 325
7.9套用举例:安排活动计画 327
常见编程错误 332
编程练习 333
第8章输入和输出 337
8.1档案的打开和关闭 337
8.2字元输入/输出 341
8.2.1fgetc,getc,getchar 341
8.2.2fputc,putc,putchar 341
8.3套用举例:以位元组为单位确定源档案的长度 343
8.4字元串输入/输出 344
8.4.1fgets,gets 344
8.4.2fputs,puts 346
8.5格式化输入/输出 347
8.5.1scanf,fscanf,sscanf 347
8.5.2printf,fprintf,sprintf 352
8.5.3字元转换以及字元检测函式 358
8.6非格式化输入/输出 361
8.6.1fwrite 361
8.6.2fread 361
8.7档案的定位函式:fseek,ftell,rewind 362
练习 364
8.8套用举例:随机访问档案 366
常见编程错误 376
编程练习 376
第9章结构、联合和枚举类型 381
9.1结构介绍 381
9.2套用举例:模式识别 389
9.3typedef构造 394
9.3.1typedef的一般用法 394
9.3.2typedef和代码的可移植性 395
9.3.3typedef和结构 395
9.4对结构的操作 397
9.4.1初始化结构的成员 397
9.4.2赋值运算符套用于结构变数 398
9.5结构指针、结构嵌套和自指结构 400
9.5.1结构指针 400
9.5.2结构嵌套 403
9.5.3自指结构 404
9.6结构和函式 406
9.6.1通过传值方式传递结构 406
9.6.2传递指向结构的指针 409
9.6.3结构作为常量参数 411
9.7套用举例:销售报表 413
9.8联合与位栏位 428
9.8.1联合 428
9.8.2位栏位 430
9.9枚举类型 432
常见编程错误 434
编程练习 437
第10章数据结构简介 440
10.1编译时和运行时的存储分配 441
10.1.1malloc:一个用于运行时存储分配的函式 441
10.1.2calloc:另一个用于运行时存储分配的函式 443
10.1.3访问运行时分配的存储空间 443
10.1.4释放运行时分配的存储空间 444
10.1.5无用单元 445
10.2鍊表 447
10.2.1鍊表的组成和结构 447
10.2.2运行时结点的动态分配 451
10.2.3对鍊表的操作 454
10.3套用举例:文本编辑器 459
10.4栈和伫列 473
10.4.1栈 474
10.4.2伫列 479
10.5套用举例:中缀表达式转换成后缀表达式 484
10.6图和树 491
10.6.1图 491
10.6.2树 493
10.7树的遍历 497
10.7.13种二叉树的遍历算法 497
10.7.2二叉树的表示 499
10.8广度优先搜寻和深度优先搜寻 502
10.8.1两种搜寻方法的基本原理 502
10.8.2广度优先搜寻的实现 502
10.9套用举例:图的启发式搜寻 512
常见编程错误 523
编程练习 523
第11章高级话题 529
11.1断言 529
11.2异常处理和跳转 534
11.3C的图形支持 540
11.3.1视频显示器 540
11.3.2控制 541
11.3.3出错处理 542
11.3.4画图 542
11.3.5文本输出 543
11.3.6颜色设定 544
11.3.7状态 544
11.4套用举例:碎片绘製 544
11.5C和C++ 551
11.5.1面向对象设计 551
11.5.2类和抽象数据类型 553
11.5.3继承 555
11.5.4多态 557
11.5.5C++程式举例 558
编程练习 564
附录AASCII与EBCDIC码錶 566
附录BC语言概要 573
附录CC语言语法图解 583
附录DC的部分库函式 597
附录EC和UNIX 615
附录FMicrosoftVisualC++和BorlandC++Builder 625
附录G传统C的变化 629
编号为奇数的练习解答 632