微信扫一扫,移动浏览光盘
简介
C语言是一种计算机程序设计语言,它功能强大,可以用来编写系统软
件及应用软件,应用范围很广泛。作为一门计算机编程语言,C语言有自己
的规范,所以对初学者而言概念比较多、不易理解。
本书分为5篇,共23章,循序渐进地从基本概念到具体实践讲述C语言
,并对具体知识点进行详细的实例讲解。第一部分包括第1~2章,主要讲
述Turbo C的安装、开发环境的介绍,以及如何在Turbo C中调试运行程序
。第二部分包括第3~7章,主要介绍C语言中的基本概念,变量与常量、运
算符与表达式、输入输出函数、C语言三种基本结构。第三部分包括第8~
11章,介绍C语言中的重点与难点,包括数组、函数、指针、结构体与共用
体。第四部分包括第12~20章,介绍数据结构的相关内容,包括栈、队列
、串、树、图,这几部分内容是数据结构的重要组成。第五部分包括第21
~23章,介绍C语言中文件及编译部分,以及错误调试的内容。
本书的特点是不仅详细介绍了C语言中各个概念,而且在每个知识点后
都配套有实例讲解,详细描述C语言中各个概念的实际应用及注意点,非常
实用,方便读者模拟实践。本书适合没有编程基础的C语言初学者;正在学
习C语言基础或深入了解数据结构的用户也可以阅读;并可作为大、中专院
校师生或培训班教材;对于开发人员,本书也可以作为参考手册。
目录
第一部分 c语言开发环境篇
第1章 turbo c介绍 24
本章主要介绍了安装turbo c 3.0的步骤、相关设置,以及环境界面中各个菜单的详细介绍。读者在学习本章内容时,尤其是在安装turbo c 3.0时,最好在计算机上跟着介绍的步骤逐步操作,学会安装并且了解整个界面,以及一些菜单的使用等。
1.1 turbo c的配置与安装 24
1.1.1 turbo c简介 24
1.1.2 安装turbo c 3.0 24
1.2 初识turbo c环境界面 27
1.2.1 设置turbo c 27
1.2.2 界面简介 29
1.3 本章小结 32
第2章 初识c程序 33
本章主要介绍了第一个c语言程序,介绍程序的各个组成部分及作用。然后利用turbo c 3.0环境调试这个程序,其中重点讲述了如何保存、调试、检查错误、运行显示结果。另外本章还涉及了一些算法的内容,并介绍了如何应用流程图表示程序。
2.1 第一个c程序 33
2.2 c语言的后缀名 34
2.3 c语言的上机步骤 35
2.3.1 程序运行流程 35
2.3.2 输入源程序 35
2.3.3 运行源程序 36
2.3.4 调试检查错误 36
2.3.5 显示运行结果 37
.2.4 打开光盘中源程序的步骤 37
2.5 算法及表示 38
2.5.1 算法 38
2.5.2 算法的表示 39
2.6 本章小结 42
第二部分 c语言基础知识篇
第3章 变量与常量 44
本章主要介绍c语言中变量、常量,以及数据类型。首先介绍了c语言的基本符号、标识符,这部分是c语言的基础,由此再引入变量,变量的定义及变量的常见数据类型。学会了变量的基本知识,读者就不难理解常量及其数据类型。本章知识结构安排一环扣一环,联系比较紧密,希望读者认真学好每一节,为以后的c语言学习打下坚实的基础。
3.1 c语言的基本语言单位 44
3.1.1 基本符号 44
3.1.2 标识符 45
3.1.3 关键字 46
3.2 变量及变量的数据类型 48
3.2.1 基本概念 48
3.2.2 变量的定义 48
3.2.3 整型变量 49
3.2.4 实型变量 51
3.2.5 字符型变量 52
3.3 常量及常量的数据类型 53
3.3.1 常量的定义 53
3.3.2 整型常量 54
3.3.3 实型常量 54
3.3.4 字符型常量 56
3.3.5 字符串常量 56
3.3.6 符号常量 57
3.3.7 转义字符 58
3.3.8 地址常量 60
3.4 综合示例 61
3.5 本章小结 63
第4章 运算符、表达式和语句 64
本章主要介绍了c语言中的运算符,具体指的是算术运算符、逻辑运算符和关系运算符、逗号运算符、赋值运算符、位运算符、自增自减运算符等,这些知识都是非常基础的;另外本章在这些基础上介绍了运算符的表达式及语句。在以后编写复杂程序时,这些内容都是必备的知识,所以学好这部分内容是c程序编写基础中的基础。
4.1 算术运算符与表达式 64
4.1.1 算术运算符 64
4.1.2 算术表达式 65
4.2 自增自减运算符与表达式 66
4.3 赋值运算符与表达式 67
4.3.1 类型转换 67
4.3.2 复合赋值运算符 68
4.3.3 赋值表达式 69
4.4 逗号运算符与表达式 70
4.5 关系运算符与表达式 71
4.5.1 关系运算符 71
4.5.2 关系表达式 71
4.6 条件运算符与表达式 72
4.7 逻辑运算符与表达式 74
4.7.1 逻辑运算符 74
4.7.2 逻辑表达式 76
4.8 位运算符与表达式 77
4.8.1 按位与运算 77
4.8.2 按位或运算 78
4.8.3 按位异或运算 79
4.8.4 按位求反运算 80
4.8.5 左移运算 80
4.8.6 右移运算 81
4.9 综合示例 82
4.10 本章小结 87
第5章 输入/输出函数 88
输入输出函数的规则比较烦琐,而作为一项最基本的操作,在设计程序时总会有输入输出这一环节,所以本章是比较重要的一个基本内容。在学习相关规则时,着重记住一些规则就可以掌握输入/输出的关键所在。要了解和熟练掌握这部分内容,最好的办法就是在不断编写和调试程序的过程中掌握输入/输出的规则。
5.1 字符型数据的输入/输出 88
5.1.1 字符输出 88
5.1.2 字符输入 90
5.1.3 字符串输入/输出 91
5.2 标准格式输出 91
5.2.1 输出字符 92
5.2.2 输出整数 95
5.2.3 输出浮点数 97
5.3 格式输入 99
5.3.1 格式控制中无间隔 100
5.3.2 格式控制中以逗号间隔 100
5.3.3 格式控制中有其他字符 101
5.4 本章小结 102
第6章 顺序结构和选择结构 103
顺序结构是c语言程序设计三种基本结构中最为简单的一种,但是它在c语言的编程中起着举足轻重的作用,几乎任何一个程序都有顺序结构的参与。选择结构的重点就是要找好条件,将可能的情况考虑周全,用逻辑表达式或关系表达式将条件限制准确。
6.1 顺序结构 103
6.1.1 顺序结构流程图 103
6.1.2 顺序结构应用举例 103
6.2 选择结构 105
6.2.1 if语句一般形式 105
6.2.2 if一般形式应用举例 106
6.2.3 if-else结构 108
6.2.4 if-else结构应用举例 109
6.2.5 if-else-if结构 111
6.2.6 if-else-if结构应用举例 112
6.2.7 if语句的嵌套 116
6.2.8 if语句的嵌套应用举例 117
6.2.9 switch语句一般形式 121
6.2.10 switch语句运行规则 122
6.2.11 带break语句的switch语句 123
6.2.12 switch语句应用举例 124
6.3 综合示例 131
6.4 本章小结 136
第7章 循环结构 137
循环结构是c语言中非常重要的结构之一,它可以快捷、非常节省人力地解决很多实际问题。这一章中,主要要求大家能够熟练掌握循环的三种语句,能够融会贯通地使用,尤其是注意比较三种语句之间的异同,对于很多问题,多加思考,多动手练习,亲自编写程序,打好基础。
7.1 for语句 137
7.1.1 for语句的一般形式 137
7.1.2 for语句的其他形式 138
7.1.3 for语句应用举例 139
7.2 while语句 142
7.2.1 while语句的一般形式 143
7.2.2 while语句的特殊形式 143
7.2.3 while语句的使用规则 143
7.2.4 while语句应用举例 144
7.3 do-while语句 146
7.3.1 do-while语句的一般形式 146
7.3.2 do-while语句的使用规则 147
7.3.3 do-while语句应用举例 147
7.4 循环结构的嵌套 148
7.4.1 几种常用的循环嵌套形式 149
7.4.2 循环结构的嵌套的运行规则 150
7.4.3 循环结构嵌套应用举例 151
7.5 转移语句 152
7.5.1 break语句 152
7.5.2 continue语句 153
7.5.3 goto语句 154
7.6 综合示例 155
7.7 本章小结 159
第三部分 c语言重点知识篇
第8章 数组 162
本章主要介绍了数组方面的知识,分别从一维数组、二维数组、字符数组这三点展开讲解。一维数组是数组的基础,二维数组、多维数组及字符数组都是建立在它的基础上的。使用数组可以解决很多看来很复杂的问题,简单易懂。
8.1 一维数组 162
8.1.1 一维数组的定义 162
8.1.2 一维数组初始化 163
8.1.3 一维数组元素的引用 164
8.1.4 一维数组应用举例 164
8.2 二维数组 168
8.2.1 二维数组的定义 168
8.2.2 二维数组初始化 169
8.2.3 二维数组元素的引用 170
8.2.4 二维数组应用举例 171
8.3 字符数组 175
8.3.1 字符数组的定义 176
8.3.2 字符数组初始化 176
8.3.3 字符数组的输出 177
8.3.4 字符数组的输入 178
8.3.5 字符串操作函数 180
8.3.6 字符数组应用举例 183
8.4 综合示例 185
8.5 本章小结 192
第9章 函数 193
本章主要介绍函数的相关内容,包括概念、定义、声明及调用等内容,程序中用户自定义一些函数,使得程序模块化,可读性强,而且优化程序。另外还介绍了函数的嵌套调用及递归调用,以及函数参数传递的内容,这部分内容中比较难的是数组名作为参数传递的时候要注意传址与传值的差别。
9.1 函数的定义 193
9.2 函数的返回值 194
9.3 函数的声明 195
9.4 函数的调用 196
9.4.1 函数的调用格式 196
9.4.2 函数的调用方式 197
9.4.3 函数的嵌套调用 198
9.4.4 函数的递归调用 199
9.5 函数参数传递 203
9.5.1 函数的形式参数与实际参数 203
9.5.2 函数的参数传递 204
9.6 数组与函数 205
9.6.1 数组元素作为函数参数 205
9.6.2 一维数组名作为函数参数 206
9.6.3 二维数组名作为函数参数 208
9.7 变量的存储类别 210
9.7.1 动态存储与静态存储 210
9.7.2 全局变量与局部变量 211
9.8 全局变量 214
9.8.1 在函数外定义 214
9.8.2 extern变量——扩展变量的作用域 215
9.8.3 static变量——静态变量 218
9.9 局部变量 218
9.9.1 auto变量——自动变量 218
9.9.2 register变量——寄存器变量 219
9.9.3 static变量——静态局部变量 220
9.10 综合示例 222
9.11 本章小结 227
第10章 指针 228
本章介绍了指针的基本概念和初步应用。应该说明,指针是c语言中重要的概念,也是c语言的一个特色。由于指针的错误应用甚至会致使整个程序遭受破坏,因此,在使用指针时一定要十分小心,另外读者还应该多实践,在实际应用中熟悉它。
10.1 地址和指针的概念 228
10.1.1 内存中数据的直接访问方式 228
10.1.2 内存中数据的间接访问方式 229
10.1.3 两种内存数据访问方式的举例 229
10.1.4 地址和指针的概念 230
10.2 变量的指针与指针变量 230
10.2.1 指针变量的定义 231
10.2.2 指针变量的引用 232
10.2.3 “&”和“*”运算符的结合方向 234
10.2.4 指针变量作为函数参数 235
10.3 数组与指针 239
10.3.1 指向数组元素的指针 240
10.3.2 通过指针引用数组元素 241
10.3.3 指针引用数组元素应用举例 242
10.3.4 使用指针变量时需注意的问题 244
10.3.5 指向数组的指针变量的运算 246
10.3.6 指向二维数组的指针变量 247
10.4 字符串与指针 250
10.4.1 用字符数组表示字符串 250
10.4.2 用字符指针表示字符串 251
10.4.3 表示字符串两种方法应用举例 252
10.4.4 字符串指针作函数参数 254
10.4.5 对使用字符指针变量和字符数组的讨论 256
10.5 指向函数的指针 259
10.5.1 用函数指针变量调用函数 259
10.5.2 用函数指针变量调用函数需注意问题 261
10.5.3 用指向函数的指针作函数参数 261
10.6 返回指针值的函数 264
10.7 指针数组和指向指针的指针 266
10.7.1 指针数组的概念 266
10.7.2 指向指针的指针 268
10.8 有关指针的数据类型和指针运算的小结 270
10.8.1 有关指针的数据类型的小结 270
10.8.2 指针运算小结 271
10.9 综合示例 272
10.10 本章小结 287
第11章 结构体与共用体 288
本章介绍了用户定义的数据:结构体、共用体和枚举类型,以及定义数据类型的typedef关键字的使用。这几种数据类型使c语言功能更加强大,编程更加简便。要注意类型定义与定义变量的区别,以及在使用过程中应该注意的问题。
11.1 结构体变量 288
11.1.1 结构体变量定义的方法 289
11.1.2 结构体变量的初始化 292
11.1.3 结构体变量的引用 293
11.1.4 结构体变量的数据传递 295
11.1.5 用结构体构成链表 296
11.2 结构体数组 298
11.2.1 结构体数组的定义 298
11.2.2 结构体数组的初始化 299
11.3 结构体与指针 302
11.3.1 指向结构体变量的指针 302
11.3.2 指向结构体数组的指针 303
11.4 结构体指针与链表 304
11.4.1 链表概述 304
11.4.2 对链表的操作 306
11.4.3 建立链表 306
11.4.4 取链表中数据 310
11.4.5 插入数据 310
11.4.6 删除数据 312
11.4.7 清空链表 314
11.4.8 合并链表 314
11.5 共用体 316
11.5.1 共用体类型定义的方法 316
11.5.2 共用体变量的引用 319
11.6 枚举类型 321
11.7 用typedef定义类型 323
11.8 综合示例 324
11.9 本章小结 329
第四部分 数据结构篇
第12章 数据结构概论 332
本章主要介绍了数据结构的一些基本概念和术语,包括数据的基本概念、数据的类型及算法。这是数据结构部分的基础,为下面学习数据结构提供了基本概念。学习数据结构时重点也在于掌握数据结构的结构特点。
12.1 基本概念 332
12.1.1 数据结构的定义 332
12.1.2 数据的逻辑结构 333
12.1.3 数据的存储结构 334
12.1.4 数据的运算结构 335
12.2 数据类型和抽象数据类型 336
12.2.1 数据类型 336
12.2.2 抽象数据类型 336
12.3 算法及算法分析 337
12.3.1 算法特性 337
12.3.2 算法描述 338
12.3.3 算法设计的要求 338
12.3.4 算法分析 338
12.4 本章小结 341
第13章 线性表 342
在本章中,首先学习了关于线性表的一些基本概念,包括什么是线性表,它的一些基本操作集合是什么。然后,分别介绍了线性表的两种表示形式,一种是线性表的顺序存储方式,即顺序表;另一种是线性表的链式存储方式,即链表。同时分别给出了相应的操作和具体的程序。最后,比较了两种存储方式的优缺点,并给出使用意见。
13.1 线性表基本概念 342
13.2 线性表的顺序存储结构 343
13.2.1 创建顺序表 345
13.2.2 操作顺序表 346
13.2.3 顺序表的插入操作 348
13.2.4 顺序表的删除操作 349
13.2.5 顺序表的综合案例 351
13.3 线性表的链式存储结构 352
13.3.1 创建链表 354
13.3.2 操作单链表 356
13.3.3 单链表的插入操作 358
13.3.4 单链表的删除操作 359
13.3.5 单链表的综合案例 361
13.3.6 循环链表 363
13.4 两种存储方式的比较 364
13.5 本章小结 364
第14章 栈 365
栈是特殊的线性表,是操作受限的线性表,它的操作是线性表操作的子集。但是正是因为栈具有这种特点,所以在解决一些特殊问题时可使问题变得简单。所以本章主要的目标是学会栈的各种操作,包括初始化、插入、删除、取栈顶元素等,还要学会利用栈的特殊性来解决问题。
14.1 生活中的例子 365
14.2 栈的定义 365
14.3 栈的表示与实现 366
14.3.1 栈的表示 367
14.3.2 栈的操作 367
14.4 栈的应用 371
14.5 本章小结 374
第15章 队列 375
队列与栈相同,都是操作受限的线性结构,所不同的是,栈的操作是“先进后出”,即先插入到栈的元素先到栈底的,在删除元素时是先删掉后进的元素,先进的元素是后删除的;而队列的操作是“先进先出”,即队列是一端插入一端删除的,先进入的元素从另一端删除,遵循先进先出的规则。
15.1 生活中的例子 375
15.2 队列的定义 376
15.3 队列的单链式表示与实现 377
15.3.1 链队列的定义 377
15.3.2 单链队列的操作 377
15.4 队列的循环链式表示与实现 382
15.4.1 循环队列的定义 382
15.4.2 循环队列的操作 383
15.5 本章小结 386
第16章 串 387
这一章向读者介绍了串类型的定义及其实现方法,串的基本操作通常以“串的整体”作为操作对象,而不像线性表是以“数据元素”作为操作对象。本章着重要了解的内容就是如何进行串的定义及表示,各种操作如串的联接、比较、求子串及定位都是重点要掌握的内容。
16.1 串的定义 387
16.2 串的定长顺序存储表示 388
16.2.1 串联接 388
16.2.2 求子串函数 391
16.2.3 求子串位置的定位函数 392
16.3 串的堆分配存储表示 394
16.3.1 串的操作 394
16.3.2 串的综合案例 397
16.4 本章小结 399
第17章 树与二叉树 400
本章主要介绍了树这种非线性结构,它的主要特点是层次性和分支性,在现实生活中也存在许多这种数据结构的模型,应用非常广泛。另外本章着重介绍的是二叉树,它是和树不同的另一种树型结构,它的特性读者应该熟练掌握的。此外在应用方面,本章还介绍了最优树和最优前缀编码的构造方法。
17.1 树的基本知识 400
17.1.1 日常生活中的树 400
17.1.2 什么是树 401
17.1.3 树的基本术语 402
17.2 二叉树 403
17.2.1 二叉树的含义 403
17.2.2 两种特殊形态的二叉树 403
17.2.3 二叉树与树的比较 404
17.2.4 二叉树的存储结构 405
17.3 树的存储 406
17.3.1 双亲表示法 407
17.3.2 孩子表示法 408
17.3.3 孩子兄弟表示法 408
17.4 遍历二叉树 409
17.4.1 先序遍历 409
17.4.2 中序遍历 410
17.4.3 后序遍历 411
17.4.4 遍历算法比较 411
17.4.5 线索二叉树 411
17.5 树与二叉树的转换 412
17.5.1 树转化为二叉树 412
17.5.2 二叉树转化为树 413
17.6 森林与二叉树的转换 413
17.6.1 森林转化为二叉树 413
17.6.2 二叉树转化为森林 414
17.7 最优二叉树 414
17.7.1 相关术语 414
17.7.2 什么是最优二叉树 416
17.7.3 构造最优二叉树 416
17.7.4 赫夫曼编码 417
17.8 本章小结 418
第18章 图 419
在本章中,首先学习了图的一些基本知识,讲解了图在计算机中的存储结构和其遍历方法,将理论中的图与计算机联系起来。接着,了解了图在现实生活中的一些基本应用,以及实际中一些问题解决方法。
18.1 图的基本知识 419
18.1.1 现实生活中的图 419
18.1.2 什么是图 420
18.1.3 图的分类 420
18.1.4 图的基本术语 421
18.1.5 完全图 423
18.1.6 连通图 423
18.1.7 和其他结构对比 424
18.2 图的基本存储结构 425
18.2.1 图的邻接矩阵存储结构 426
18.2.2 图的邻接表存储结构 430
18.3 图的遍历 434
18.3.1 深度优先遍历 434
18.3.2 广度优先遍历 438
18.4 最小生成树 443
18.4.1 生活中的最小生成树 443
18.4.2 最小生成树的基本概念 443
18.4.3 最小生成树的普里姆算法 444
18.4.4 最小生成树的克鲁斯卡尔算法 449
18.5 最短路径 453
18.5.1 生活中的最短路径 453
18.5.2 最短路径基本思想 453
18.5.3 迪克斯特拉(dijkstra)算法求最短路径基本思想 454
18.5.4 迪克斯特拉(dijkstra)算法实现 455
18.5.5 迪克斯特拉(dijkstra)算法动态执行过程 458
18.6 综合示例 459
18.7 本章小结 464
第19章 查找 466
程序一般涉及增、删、改、查4种基本的运算,查找是一个使用频率非常高的运算。本章主要介绍了5种查找方法,分别为顺序查找、二分查找、分块查找、二叉排序树查找和哈希表查找。
19.1 顺序查找 466
19.1.1 基本思想 466
19.1.2 算法实现 467
19.1.3 顺序查找的总结 470
19.2 二分查找 470
19.2.1 基本思想 470
19.2.2 算法实现 472
19.2.3 二分查找的总结 475
19.3 分块查找 475
19.3.1 基本思想 475
19.3.2 算法实现 476
19.3.3 分块查找算法的总结 479
19.4 二叉排序树查找 479
19.4.1 什么是二叉排序树 480
19.4.2 二叉排序树查找基本思想 480
19.4.3 查找算法实现 480
19.4.4 二叉排序树的结点插入算法 482
19.4.5 二叉排序树的建立算法 483
19.4.6 二叉排序树的结点删除算法 484
19.5 哈希表查找 487
19.5.1 散列存储 487
19.5.2 哈希函数的构造 488
19.5.3 冲突处理 489
19.5.4 哈希表的插入与查找算法实现 491
19.6 综合示例 493
19.7 本章小结 497
第20章 排序 498
排序是数据处理过程中经常使用的一种重要的运算,它往往是一个系统的核心部分。排序算法的优劣对于一个系统来说至关重要。如果不对数据进行排序,存储在计算机里数据将杂乱无章,用户也无法找到需要的数据。
20.1 排序的基本概念 498
20.1.1 基本概念 498
20.1.2 数据结构的定义 499
20.1.3 输入/输出数据 499
20.2 直接插入排序 500
20.2.1 直接插入排序的基本思想 500
20.2.2 直接插入排序的过程 501
20.2.3 直接插入排序的算法实现 503
20.2.4 直接插入排序的算法测试 503
20.3 二分法插入排序 505
20.3.1 二分法插入排序的基本思想 505
20.3.2 二分法插入排序的过程 506
20.3.3 二分法插入排序的算法实现 506
20.3.4 二分法插入排序的算法测试 507
20.4 冒泡排序 510
20.4.1 冒泡排序的基本思想 510
20.4.2 冒泡排序的过程 510
20.4.3 冒泡排序的算法实现 511
20.4.4 冒泡排序的算法测试 512
20.5 快速排序 514
20.5.1 快速排序的基本思想 514
20.5.2 快速排序的过程 515
20.5.3 快速排序的算法实现 516
20.5.4 快速排序的算法测试 517
20.6 选择排序 519
20.6.1 直接选择排序的基本思想 519
20.6.2 直接选择排序的过程 519
20.6.3 直接选择排序的算法实现 519
20.6.4 直接选择排序的算法测试 521
20.7 归并排序 523
20.7.1 二路归并排序的基本思想 523
20.7.2 排序过程中的一次归并与一趟归并 523
20.7.3 归并排序的算法实现 525
20.7.4 归并排序的算法测试 527
20.8 综合示例 530
20.9 本章小结 534
第五部分 文件与程序编译篇
第21章 文件 536
文件操作的相关内容是很重要的,许多可供实际使用的c程序都包含文件处理。本章只介绍一些最基本的概念,没有深入探讨。如果读者有兴趣,可以在实践中更进一步地掌握文件的应用。
21.1 c语言文件 536
21.2 文件指针 538
21.3 打开、关闭和检测文件 538
21.3.1 打开文件 539
21.3.2 关闭文件 540
21.3.3 检测文件 540
21.4 文件的输入/输出 541
21.4.1 文件中输入/输出字符 541
21.4.2 文件中输入/输出字符串 543
21.4.3 读写文本文件 545
21.4.4 读写二进制文件 547
21.5 文件的定位 549
21.5.1 文件位置指针变化 549
21.5.2 文件随机读/写 549
21.5.3 获得文件位置指针的当前位置 550
21.6 综合示例 550
21.7 本章小结 554
第22章 预处理命令 555
预处理是c语言的一个重要功能,在对一个源程序进行编译之前,系统会自动对源程序中的预处理部分先进行处理。预处理命令一般有三种,即文件包含、宏、条件编译,合理地学会利用预处理功能可以使程序更方便修改、调试。
22.1 预处理概述 555
22.2 文件包含 555
22.2.1 #include形式——文件包含 556
22.2.2 文件包含举例 557
22.3 宏定义 559
22.3.1 无参数的宏定义 559
22.3.2 带参数的宏定义 562
22.4 条件编译 565
22.4.1 #ifdef 565
22.4.2 #ifndef 567
22.4.3 #if常量表达式 568
22.5 本章小结 570
第23章 错误调试 571
本章主要介绍了c程序中的常见错误及如何调试程序。一个程序是否正确并可运行,只有经过调试才能知道。程序调试是一项细致深入的工作,需要下工夫、动脑子,并要善于积累经验。程序调试的过程往往反映出程序员的水平、经验和科学态度。希望读者能给予足够的重视,并在实践中加以练习。
23.1 编译时的常见错误 571
23.1.1 数据类型错误 571
23.1.2 分号错误 573
23.1.3 符号不匹配 573
23.1.4 头文件 573
23.1.5 关键字 573
23.1.6 变量的定义及使用 574
23.1.7 警告错误太多 575
23.1.8 关系运算符误用 575
23.2 连接时的常见错误 575
23.3 运行时的常见错误 576
23.4 错误提示中英文对照 576
23.4.1 致命错误中英文对照及处理方法 577
23.4.2 一般错误信息中英文对照及处理方法 577
23.5 程序调试步骤 578
23.6 综合示例 578
23.7 本章小结 583
第1章 turbo c介绍 24
本章主要介绍了安装turbo c 3.0的步骤、相关设置,以及环境界面中各个菜单的详细介绍。读者在学习本章内容时,尤其是在安装turbo c 3.0时,最好在计算机上跟着介绍的步骤逐步操作,学会安装并且了解整个界面,以及一些菜单的使用等。
1.1 turbo c的配置与安装 24
1.1.1 turbo c简介 24
1.1.2 安装turbo c 3.0 24
1.2 初识turbo c环境界面 27
1.2.1 设置turbo c 27
1.2.2 界面简介 29
1.3 本章小结 32
第2章 初识c程序 33
本章主要介绍了第一个c语言程序,介绍程序的各个组成部分及作用。然后利用turbo c 3.0环境调试这个程序,其中重点讲述了如何保存、调试、检查错误、运行显示结果。另外本章还涉及了一些算法的内容,并介绍了如何应用流程图表示程序。
2.1 第一个c程序 33
2.2 c语言的后缀名 34
2.3 c语言的上机步骤 35
2.3.1 程序运行流程 35
2.3.2 输入源程序 35
2.3.3 运行源程序 36
2.3.4 调试检查错误 36
2.3.5 显示运行结果 37
.2.4 打开光盘中源程序的步骤 37
2.5 算法及表示 38
2.5.1 算法 38
2.5.2 算法的表示 39
2.6 本章小结 42
第二部分 c语言基础知识篇
第3章 变量与常量 44
本章主要介绍c语言中变量、常量,以及数据类型。首先介绍了c语言的基本符号、标识符,这部分是c语言的基础,由此再引入变量,变量的定义及变量的常见数据类型。学会了变量的基本知识,读者就不难理解常量及其数据类型。本章知识结构安排一环扣一环,联系比较紧密,希望读者认真学好每一节,为以后的c语言学习打下坚实的基础。
3.1 c语言的基本语言单位 44
3.1.1 基本符号 44
3.1.2 标识符 45
3.1.3 关键字 46
3.2 变量及变量的数据类型 48
3.2.1 基本概念 48
3.2.2 变量的定义 48
3.2.3 整型变量 49
3.2.4 实型变量 51
3.2.5 字符型变量 52
3.3 常量及常量的数据类型 53
3.3.1 常量的定义 53
3.3.2 整型常量 54
3.3.3 实型常量 54
3.3.4 字符型常量 56
3.3.5 字符串常量 56
3.3.6 符号常量 57
3.3.7 转义字符 58
3.3.8 地址常量 60
3.4 综合示例 61
3.5 本章小结 63
第4章 运算符、表达式和语句 64
本章主要介绍了c语言中的运算符,具体指的是算术运算符、逻辑运算符和关系运算符、逗号运算符、赋值运算符、位运算符、自增自减运算符等,这些知识都是非常基础的;另外本章在这些基础上介绍了运算符的表达式及语句。在以后编写复杂程序时,这些内容都是必备的知识,所以学好这部分内容是c程序编写基础中的基础。
4.1 算术运算符与表达式 64
4.1.1 算术运算符 64
4.1.2 算术表达式 65
4.2 自增自减运算符与表达式 66
4.3 赋值运算符与表达式 67
4.3.1 类型转换 67
4.3.2 复合赋值运算符 68
4.3.3 赋值表达式 69
4.4 逗号运算符与表达式 70
4.5 关系运算符与表达式 71
4.5.1 关系运算符 71
4.5.2 关系表达式 71
4.6 条件运算符与表达式 72
4.7 逻辑运算符与表达式 74
4.7.1 逻辑运算符 74
4.7.2 逻辑表达式 76
4.8 位运算符与表达式 77
4.8.1 按位与运算 77
4.8.2 按位或运算 78
4.8.3 按位异或运算 79
4.8.4 按位求反运算 80
4.8.5 左移运算 80
4.8.6 右移运算 81
4.9 综合示例 82
4.10 本章小结 87
第5章 输入/输出函数 88
输入输出函数的规则比较烦琐,而作为一项最基本的操作,在设计程序时总会有输入输出这一环节,所以本章是比较重要的一个基本内容。在学习相关规则时,着重记住一些规则就可以掌握输入/输出的关键所在。要了解和熟练掌握这部分内容,最好的办法就是在不断编写和调试程序的过程中掌握输入/输出的规则。
5.1 字符型数据的输入/输出 88
5.1.1 字符输出 88
5.1.2 字符输入 90
5.1.3 字符串输入/输出 91
5.2 标准格式输出 91
5.2.1 输出字符 92
5.2.2 输出整数 95
5.2.3 输出浮点数 97
5.3 格式输入 99
5.3.1 格式控制中无间隔 100
5.3.2 格式控制中以逗号间隔 100
5.3.3 格式控制中有其他字符 101
5.4 本章小结 102
第6章 顺序结构和选择结构 103
顺序结构是c语言程序设计三种基本结构中最为简单的一种,但是它在c语言的编程中起着举足轻重的作用,几乎任何一个程序都有顺序结构的参与。选择结构的重点就是要找好条件,将可能的情况考虑周全,用逻辑表达式或关系表达式将条件限制准确。
6.1 顺序结构 103
6.1.1 顺序结构流程图 103
6.1.2 顺序结构应用举例 103
6.2 选择结构 105
6.2.1 if语句一般形式 105
6.2.2 if一般形式应用举例 106
6.2.3 if-else结构 108
6.2.4 if-else结构应用举例 109
6.2.5 if-else-if结构 111
6.2.6 if-else-if结构应用举例 112
6.2.7 if语句的嵌套 116
6.2.8 if语句的嵌套应用举例 117
6.2.9 switch语句一般形式 121
6.2.10 switch语句运行规则 122
6.2.11 带break语句的switch语句 123
6.2.12 switch语句应用举例 124
6.3 综合示例 131
6.4 本章小结 136
第7章 循环结构 137
循环结构是c语言中非常重要的结构之一,它可以快捷、非常节省人力地解决很多实际问题。这一章中,主要要求大家能够熟练掌握循环的三种语句,能够融会贯通地使用,尤其是注意比较三种语句之间的异同,对于很多问题,多加思考,多动手练习,亲自编写程序,打好基础。
7.1 for语句 137
7.1.1 for语句的一般形式 137
7.1.2 for语句的其他形式 138
7.1.3 for语句应用举例 139
7.2 while语句 142
7.2.1 while语句的一般形式 143
7.2.2 while语句的特殊形式 143
7.2.3 while语句的使用规则 143
7.2.4 while语句应用举例 144
7.3 do-while语句 146
7.3.1 do-while语句的一般形式 146
7.3.2 do-while语句的使用规则 147
7.3.3 do-while语句应用举例 147
7.4 循环结构的嵌套 148
7.4.1 几种常用的循环嵌套形式 149
7.4.2 循环结构的嵌套的运行规则 150
7.4.3 循环结构嵌套应用举例 151
7.5 转移语句 152
7.5.1 break语句 152
7.5.2 continue语句 153
7.5.3 goto语句 154
7.6 综合示例 155
7.7 本章小结 159
第三部分 c语言重点知识篇
第8章 数组 162
本章主要介绍了数组方面的知识,分别从一维数组、二维数组、字符数组这三点展开讲解。一维数组是数组的基础,二维数组、多维数组及字符数组都是建立在它的基础上的。使用数组可以解决很多看来很复杂的问题,简单易懂。
8.1 一维数组 162
8.1.1 一维数组的定义 162
8.1.2 一维数组初始化 163
8.1.3 一维数组元素的引用 164
8.1.4 一维数组应用举例 164
8.2 二维数组 168
8.2.1 二维数组的定义 168
8.2.2 二维数组初始化 169
8.2.3 二维数组元素的引用 170
8.2.4 二维数组应用举例 171
8.3 字符数组 175
8.3.1 字符数组的定义 176
8.3.2 字符数组初始化 176
8.3.3 字符数组的输出 177
8.3.4 字符数组的输入 178
8.3.5 字符串操作函数 180
8.3.6 字符数组应用举例 183
8.4 综合示例 185
8.5 本章小结 192
第9章 函数 193
本章主要介绍函数的相关内容,包括概念、定义、声明及调用等内容,程序中用户自定义一些函数,使得程序模块化,可读性强,而且优化程序。另外还介绍了函数的嵌套调用及递归调用,以及函数参数传递的内容,这部分内容中比较难的是数组名作为参数传递的时候要注意传址与传值的差别。
9.1 函数的定义 193
9.2 函数的返回值 194
9.3 函数的声明 195
9.4 函数的调用 196
9.4.1 函数的调用格式 196
9.4.2 函数的调用方式 197
9.4.3 函数的嵌套调用 198
9.4.4 函数的递归调用 199
9.5 函数参数传递 203
9.5.1 函数的形式参数与实际参数 203
9.5.2 函数的参数传递 204
9.6 数组与函数 205
9.6.1 数组元素作为函数参数 205
9.6.2 一维数组名作为函数参数 206
9.6.3 二维数组名作为函数参数 208
9.7 变量的存储类别 210
9.7.1 动态存储与静态存储 210
9.7.2 全局变量与局部变量 211
9.8 全局变量 214
9.8.1 在函数外定义 214
9.8.2 extern变量——扩展变量的作用域 215
9.8.3 static变量——静态变量 218
9.9 局部变量 218
9.9.1 auto变量——自动变量 218
9.9.2 register变量——寄存器变量 219
9.9.3 static变量——静态局部变量 220
9.10 综合示例 222
9.11 本章小结 227
第10章 指针 228
本章介绍了指针的基本概念和初步应用。应该说明,指针是c语言中重要的概念,也是c语言的一个特色。由于指针的错误应用甚至会致使整个程序遭受破坏,因此,在使用指针时一定要十分小心,另外读者还应该多实践,在实际应用中熟悉它。
10.1 地址和指针的概念 228
10.1.1 内存中数据的直接访问方式 228
10.1.2 内存中数据的间接访问方式 229
10.1.3 两种内存数据访问方式的举例 229
10.1.4 地址和指针的概念 230
10.2 变量的指针与指针变量 230
10.2.1 指针变量的定义 231
10.2.2 指针变量的引用 232
10.2.3 “&”和“*”运算符的结合方向 234
10.2.4 指针变量作为函数参数 235
10.3 数组与指针 239
10.3.1 指向数组元素的指针 240
10.3.2 通过指针引用数组元素 241
10.3.3 指针引用数组元素应用举例 242
10.3.4 使用指针变量时需注意的问题 244
10.3.5 指向数组的指针变量的运算 246
10.3.6 指向二维数组的指针变量 247
10.4 字符串与指针 250
10.4.1 用字符数组表示字符串 250
10.4.2 用字符指针表示字符串 251
10.4.3 表示字符串两种方法应用举例 252
10.4.4 字符串指针作函数参数 254
10.4.5 对使用字符指针变量和字符数组的讨论 256
10.5 指向函数的指针 259
10.5.1 用函数指针变量调用函数 259
10.5.2 用函数指针变量调用函数需注意问题 261
10.5.3 用指向函数的指针作函数参数 261
10.6 返回指针值的函数 264
10.7 指针数组和指向指针的指针 266
10.7.1 指针数组的概念 266
10.7.2 指向指针的指针 268
10.8 有关指针的数据类型和指针运算的小结 270
10.8.1 有关指针的数据类型的小结 270
10.8.2 指针运算小结 271
10.9 综合示例 272
10.10 本章小结 287
第11章 结构体与共用体 288
本章介绍了用户定义的数据:结构体、共用体和枚举类型,以及定义数据类型的typedef关键字的使用。这几种数据类型使c语言功能更加强大,编程更加简便。要注意类型定义与定义变量的区别,以及在使用过程中应该注意的问题。
11.1 结构体变量 288
11.1.1 结构体变量定义的方法 289
11.1.2 结构体变量的初始化 292
11.1.3 结构体变量的引用 293
11.1.4 结构体变量的数据传递 295
11.1.5 用结构体构成链表 296
11.2 结构体数组 298
11.2.1 结构体数组的定义 298
11.2.2 结构体数组的初始化 299
11.3 结构体与指针 302
11.3.1 指向结构体变量的指针 302
11.3.2 指向结构体数组的指针 303
11.4 结构体指针与链表 304
11.4.1 链表概述 304
11.4.2 对链表的操作 306
11.4.3 建立链表 306
11.4.4 取链表中数据 310
11.4.5 插入数据 310
11.4.6 删除数据 312
11.4.7 清空链表 314
11.4.8 合并链表 314
11.5 共用体 316
11.5.1 共用体类型定义的方法 316
11.5.2 共用体变量的引用 319
11.6 枚举类型 321
11.7 用typedef定义类型 323
11.8 综合示例 324
11.9 本章小结 329
第四部分 数据结构篇
第12章 数据结构概论 332
本章主要介绍了数据结构的一些基本概念和术语,包括数据的基本概念、数据的类型及算法。这是数据结构部分的基础,为下面学习数据结构提供了基本概念。学习数据结构时重点也在于掌握数据结构的结构特点。
12.1 基本概念 332
12.1.1 数据结构的定义 332
12.1.2 数据的逻辑结构 333
12.1.3 数据的存储结构 334
12.1.4 数据的运算结构 335
12.2 数据类型和抽象数据类型 336
12.2.1 数据类型 336
12.2.2 抽象数据类型 336
12.3 算法及算法分析 337
12.3.1 算法特性 337
12.3.2 算法描述 338
12.3.3 算法设计的要求 338
12.3.4 算法分析 338
12.4 本章小结 341
第13章 线性表 342
在本章中,首先学习了关于线性表的一些基本概念,包括什么是线性表,它的一些基本操作集合是什么。然后,分别介绍了线性表的两种表示形式,一种是线性表的顺序存储方式,即顺序表;另一种是线性表的链式存储方式,即链表。同时分别给出了相应的操作和具体的程序。最后,比较了两种存储方式的优缺点,并给出使用意见。
13.1 线性表基本概念 342
13.2 线性表的顺序存储结构 343
13.2.1 创建顺序表 345
13.2.2 操作顺序表 346
13.2.3 顺序表的插入操作 348
13.2.4 顺序表的删除操作 349
13.2.5 顺序表的综合案例 351
13.3 线性表的链式存储结构 352
13.3.1 创建链表 354
13.3.2 操作单链表 356
13.3.3 单链表的插入操作 358
13.3.4 单链表的删除操作 359
13.3.5 单链表的综合案例 361
13.3.6 循环链表 363
13.4 两种存储方式的比较 364
13.5 本章小结 364
第14章 栈 365
栈是特殊的线性表,是操作受限的线性表,它的操作是线性表操作的子集。但是正是因为栈具有这种特点,所以在解决一些特殊问题时可使问题变得简单。所以本章主要的目标是学会栈的各种操作,包括初始化、插入、删除、取栈顶元素等,还要学会利用栈的特殊性来解决问题。
14.1 生活中的例子 365
14.2 栈的定义 365
14.3 栈的表示与实现 366
14.3.1 栈的表示 367
14.3.2 栈的操作 367
14.4 栈的应用 371
14.5 本章小结 374
第15章 队列 375
队列与栈相同,都是操作受限的线性结构,所不同的是,栈的操作是“先进后出”,即先插入到栈的元素先到栈底的,在删除元素时是先删掉后进的元素,先进的元素是后删除的;而队列的操作是“先进先出”,即队列是一端插入一端删除的,先进入的元素从另一端删除,遵循先进先出的规则。
15.1 生活中的例子 375
15.2 队列的定义 376
15.3 队列的单链式表示与实现 377
15.3.1 链队列的定义 377
15.3.2 单链队列的操作 377
15.4 队列的循环链式表示与实现 382
15.4.1 循环队列的定义 382
15.4.2 循环队列的操作 383
15.5 本章小结 386
第16章 串 387
这一章向读者介绍了串类型的定义及其实现方法,串的基本操作通常以“串的整体”作为操作对象,而不像线性表是以“数据元素”作为操作对象。本章着重要了解的内容就是如何进行串的定义及表示,各种操作如串的联接、比较、求子串及定位都是重点要掌握的内容。
16.1 串的定义 387
16.2 串的定长顺序存储表示 388
16.2.1 串联接 388
16.2.2 求子串函数 391
16.2.3 求子串位置的定位函数 392
16.3 串的堆分配存储表示 394
16.3.1 串的操作 394
16.3.2 串的综合案例 397
16.4 本章小结 399
第17章 树与二叉树 400
本章主要介绍了树这种非线性结构,它的主要特点是层次性和分支性,在现实生活中也存在许多这种数据结构的模型,应用非常广泛。另外本章着重介绍的是二叉树,它是和树不同的另一种树型结构,它的特性读者应该熟练掌握的。此外在应用方面,本章还介绍了最优树和最优前缀编码的构造方法。
17.1 树的基本知识 400
17.1.1 日常生活中的树 400
17.1.2 什么是树 401
17.1.3 树的基本术语 402
17.2 二叉树 403
17.2.1 二叉树的含义 403
17.2.2 两种特殊形态的二叉树 403
17.2.3 二叉树与树的比较 404
17.2.4 二叉树的存储结构 405
17.3 树的存储 406
17.3.1 双亲表示法 407
17.3.2 孩子表示法 408
17.3.3 孩子兄弟表示法 408
17.4 遍历二叉树 409
17.4.1 先序遍历 409
17.4.2 中序遍历 410
17.4.3 后序遍历 411
17.4.4 遍历算法比较 411
17.4.5 线索二叉树 411
17.5 树与二叉树的转换 412
17.5.1 树转化为二叉树 412
17.5.2 二叉树转化为树 413
17.6 森林与二叉树的转换 413
17.6.1 森林转化为二叉树 413
17.6.2 二叉树转化为森林 414
17.7 最优二叉树 414
17.7.1 相关术语 414
17.7.2 什么是最优二叉树 416
17.7.3 构造最优二叉树 416
17.7.4 赫夫曼编码 417
17.8 本章小结 418
第18章 图 419
在本章中,首先学习了图的一些基本知识,讲解了图在计算机中的存储结构和其遍历方法,将理论中的图与计算机联系起来。接着,了解了图在现实生活中的一些基本应用,以及实际中一些问题解决方法。
18.1 图的基本知识 419
18.1.1 现实生活中的图 419
18.1.2 什么是图 420
18.1.3 图的分类 420
18.1.4 图的基本术语 421
18.1.5 完全图 423
18.1.6 连通图 423
18.1.7 和其他结构对比 424
18.2 图的基本存储结构 425
18.2.1 图的邻接矩阵存储结构 426
18.2.2 图的邻接表存储结构 430
18.3 图的遍历 434
18.3.1 深度优先遍历 434
18.3.2 广度优先遍历 438
18.4 最小生成树 443
18.4.1 生活中的最小生成树 443
18.4.2 最小生成树的基本概念 443
18.4.3 最小生成树的普里姆算法 444
18.4.4 最小生成树的克鲁斯卡尔算法 449
18.5 最短路径 453
18.5.1 生活中的最短路径 453
18.5.2 最短路径基本思想 453
18.5.3 迪克斯特拉(dijkstra)算法求最短路径基本思想 454
18.5.4 迪克斯特拉(dijkstra)算法实现 455
18.5.5 迪克斯特拉(dijkstra)算法动态执行过程 458
18.6 综合示例 459
18.7 本章小结 464
第19章 查找 466
程序一般涉及增、删、改、查4种基本的运算,查找是一个使用频率非常高的运算。本章主要介绍了5种查找方法,分别为顺序查找、二分查找、分块查找、二叉排序树查找和哈希表查找。
19.1 顺序查找 466
19.1.1 基本思想 466
19.1.2 算法实现 467
19.1.3 顺序查找的总结 470
19.2 二分查找 470
19.2.1 基本思想 470
19.2.2 算法实现 472
19.2.3 二分查找的总结 475
19.3 分块查找 475
19.3.1 基本思想 475
19.3.2 算法实现 476
19.3.3 分块查找算法的总结 479
19.4 二叉排序树查找 479
19.4.1 什么是二叉排序树 480
19.4.2 二叉排序树查找基本思想 480
19.4.3 查找算法实现 480
19.4.4 二叉排序树的结点插入算法 482
19.4.5 二叉排序树的建立算法 483
19.4.6 二叉排序树的结点删除算法 484
19.5 哈希表查找 487
19.5.1 散列存储 487
19.5.2 哈希函数的构造 488
19.5.3 冲突处理 489
19.5.4 哈希表的插入与查找算法实现 491
19.6 综合示例 493
19.7 本章小结 497
第20章 排序 498
排序是数据处理过程中经常使用的一种重要的运算,它往往是一个系统的核心部分。排序算法的优劣对于一个系统来说至关重要。如果不对数据进行排序,存储在计算机里数据将杂乱无章,用户也无法找到需要的数据。
20.1 排序的基本概念 498
20.1.1 基本概念 498
20.1.2 数据结构的定义 499
20.1.3 输入/输出数据 499
20.2 直接插入排序 500
20.2.1 直接插入排序的基本思想 500
20.2.2 直接插入排序的过程 501
20.2.3 直接插入排序的算法实现 503
20.2.4 直接插入排序的算法测试 503
20.3 二分法插入排序 505
20.3.1 二分法插入排序的基本思想 505
20.3.2 二分法插入排序的过程 506
20.3.3 二分法插入排序的算法实现 506
20.3.4 二分法插入排序的算法测试 507
20.4 冒泡排序 510
20.4.1 冒泡排序的基本思想 510
20.4.2 冒泡排序的过程 510
20.4.3 冒泡排序的算法实现 511
20.4.4 冒泡排序的算法测试 512
20.5 快速排序 514
20.5.1 快速排序的基本思想 514
20.5.2 快速排序的过程 515
20.5.3 快速排序的算法实现 516
20.5.4 快速排序的算法测试 517
20.6 选择排序 519
20.6.1 直接选择排序的基本思想 519
20.6.2 直接选择排序的过程 519
20.6.3 直接选择排序的算法实现 519
20.6.4 直接选择排序的算法测试 521
20.7 归并排序 523
20.7.1 二路归并排序的基本思想 523
20.7.2 排序过程中的一次归并与一趟归并 523
20.7.3 归并排序的算法实现 525
20.7.4 归并排序的算法测试 527
20.8 综合示例 530
20.9 本章小结 534
第五部分 文件与程序编译篇
第21章 文件 536
文件操作的相关内容是很重要的,许多可供实际使用的c程序都包含文件处理。本章只介绍一些最基本的概念,没有深入探讨。如果读者有兴趣,可以在实践中更进一步地掌握文件的应用。
21.1 c语言文件 536
21.2 文件指针 538
21.3 打开、关闭和检测文件 538
21.3.1 打开文件 539
21.3.2 关闭文件 540
21.3.3 检测文件 540
21.4 文件的输入/输出 541
21.4.1 文件中输入/输出字符 541
21.4.2 文件中输入/输出字符串 543
21.4.3 读写文本文件 545
21.4.4 读写二进制文件 547
21.5 文件的定位 549
21.5.1 文件位置指针变化 549
21.5.2 文件随机读/写 549
21.5.3 获得文件位置指针的当前位置 550
21.6 综合示例 550
21.7 本章小结 554
第22章 预处理命令 555
预处理是c语言的一个重要功能,在对一个源程序进行编译之前,系统会自动对源程序中的预处理部分先进行处理。预处理命令一般有三种,即文件包含、宏、条件编译,合理地学会利用预处理功能可以使程序更方便修改、调试。
22.1 预处理概述 555
22.2 文件包含 555
22.2.1 #include形式——文件包含 556
22.2.2 文件包含举例 557
22.3 宏定义 559
22.3.1 无参数的宏定义 559
22.3.2 带参数的宏定义 562
22.4 条件编译 565
22.4.1 #ifdef 565
22.4.2 #ifndef 567
22.4.3 #if常量表达式 568
22.5 本章小结 570
第23章 错误调试 571
本章主要介绍了c程序中的常见错误及如何调试程序。一个程序是否正确并可运行,只有经过调试才能知道。程序调试是一项细致深入的工作,需要下工夫、动脑子,并要善于积累经验。程序调试的过程往往反映出程序员的水平、经验和科学态度。希望读者能给予足够的重视,并在实践中加以练习。
23.1 编译时的常见错误 571
23.1.1 数据类型错误 571
23.1.2 分号错误 573
23.1.3 符号不匹配 573
23.1.4 头文件 573
23.1.5 关键字 573
23.1.6 变量的定义及使用 574
23.1.7 警告错误太多 575
23.1.8 关系运算符误用 575
23.2 连接时的常见错误 575
23.3 运行时的常见错误 576
23.4 错误提示中英文对照 576
23.4.1 致命错误中英文对照及处理方法 577
23.4.2 一般错误信息中英文对照及处理方法 577
23.5 程序调试步骤 578
23.6 综合示例 578
23.7 本章小结 583
C语言从初学到精通
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!