
本书针对C 语言的特点,通过大量实例程序的解析,将知识点融会贯通,使读者能快速掌握C 语言在Visual C++ 环境下的编程和调试方法,提高程序设计能力。全书共13 章,主要内容可分两部分。第一部分为C 语言的基础内容,包括基本数据类型、控制结构、数组、函数和编译预处理;第二部分为C 语言的高级编程技术,也是C 语言区别于其他高级语言的部分,包括构造数据类型,即指针、结构体、共用体和文件的概念以及相互之间的联系。
本书是作者在多年C 语言教学实践经验及吸收国内外优秀教材特点的基础上精心编写而成的,力求集众多C 语言版本的优点于一身,内容由浅入深,通俗易懂,适合作为高等学校的C 语言教材,也适合C 语言自学者。
C
语言具有表达能力强、概念和功能丰富、目标程序质量高、可移植性好、使用灵活方便等特点,既具有高级语言的优点,又具有低级语言的某些特点,能够有效地用来编制各种系统软件和应用软件,是当今最为流行的一种计算机语言。因此,国内大部分高等院校都把C语言作为计算机和非计算机相关专业的一门程序设计语言课程。
C语言涉及的概念多、规则复杂、容易出错,初学者往往感觉困难。本教材在详细阐述程序设计基本概念、原理和方法的基础上,采用循序渐进、深入浅出、通俗易懂的讲解方法,本着理论与实际相结合的原则,通过大量经典实例重点讲解了C语言的概念、规则和使用方法,使程序设计语言的初学者能够在建立正确程序设计理念的前提下,掌握利用C语言进行结构化程序设计的技术和方法。全书共9章,主要内容包括:第1章 C语言概述、第2章 数据描述与基本操作、第3章 C语言的控制结构、第4章 数组、第5章 函数、第6章 指针、第7章 构造数据类型、第8章 编译预处理、第9章 文件。书中对数组、函数、指针、变量的存储类型、结构体和共用体、文件等重点和难点的内容进行了深入讲解与分析。“C语言程序设计”作为程序设计的入门课程,应重视对程序设计和C语言基本概念、原理和规则的讲解,力求给读者打下一个扎实的基础,培养读者良好的编程风格,提高读者进一步学习新程序设计语言的能力。
本教材可作为高等学校各专业程序设计基础教学的教材,特别适合作为应用型本科、高职院校的计算机及非计算机专业的学生使用,同时也可作为编程人员和C语言自学者的参考用书。
本教材第1章、第2章和第3章由白秋颖编写;第4章、第5章和第8章由张继生编写;第6章和第7章由赵骥编写;第9章由王丽君编写。在编写的过程中,田莹、刘尚懿、孟丹及艾青老师也做了大量工作,在此一并表示感谢!最后还要感谢为本教材付出心血的编辑、审稿人员等各位朋友!
为了帮助读者学习,本教材每章设有小结和习题,同时还有配套的《C语言程序设计上机指导与习题解答》的实验教材,其重点介绍了Visual C++ 6.0编译系统的使用方法,使学生在实践学习过程中能迅速掌握C语言程序的编辑、编译、调试和运行方法。
由于编者水平有限,殷切希望广大读者对书中存在的缺点和错误给予批评指正。
作 者
2008年10月
IV
计算机应用技术基础11
109
第1章 错误!文档中没有指定样式的文字。
第1章 程序设计基础知识 1
1.1 计算机的工作原理 1
1.1.1 计算机的指令系统 1
1.1.2 计算机的解题过程 2
1.1.3 存储程序原理 3
1.2 程序语言与程序设计 3
1.2.1 计算机程序与程序语言 3
1.2.2 程序设计 5
1.3 算法和算法的表示 6
1.3.1 什么是算法 6
1.3.2 算法的基本特征 8
1.4 用流程图表示算法 9
1.5 用结构化流程图表示算法 10
1.5.1 什么是结构化程序 10
1.5.2 三种基本结构 11
1.5.3 结构化流程图 13
1.6 结构化程序设计方法 14
1.6.1 结构化程序设计特征 14
1.6.2 自顶而下的设计方法 15
1.6.3 程序设计的风格 16
习题 18
第2章 C语言简介 20
2.1 C语言的发展过程 20
2.2 C语言的特点 20
2.3 C语言程序的格式和结构特点 21
2.3.1 C语言程序的格式 21
2.3.2 C语言程序的结构特点 23
2.4 C语言程序的上机执行过程 25
习题 29
第3章 数据类型、运算符与表达式 31
3.1 关键字、标识符和保留标识符 31
3.2 数据与数据类型 32
3.3 基本数据类型及其表示 33
3.3.1 常量与变量 33
3.3.2 整型数据、实型数据和字符型数据 35
3.4 C语言的运算符 41
3.4.1 运算符简介 41
3.4.2 算术运算符和算术表达式 42
3.4.3 赋值运算符和赋值表达式 43
3.4.4 增1和减1运算符 45
3.4.5 关系运算符和关系表达式 45
3.4.6 逻辑运算符和逻辑表达式 46
3.5 逗号表达式 48
3.6 程序举例 48
习题 50
第4章 控制结构 54
4.1 C语句的构成 54
4.2 输入与输出函数 56
4.2.1 格式控制的输入与输出函数 56
4.2.2 字符的输入与输出函数 66
4.3 顺序结构 67
4.4 选择结构 69
4.4.1 if语句 69
4.4.2 条件运算符和条件表达式 74
4.4.3 switch语句 75
4.4.4 选择结构程序设计举例 77
4.5 循环结构 78
4.5.1 while语句 79
4.5.2 do-while语句 81
4.5.3 for语句 82
4.5.4 循环的嵌套 86
4.5.5 几种循环的比较 86
4.6 其他控制语句 88
4.6.1 break语句 88
4.6.2 continue语句 89
4.6.3 goto语句 89
4.7 良好的源程序书写风格 90
4.7.1 源程序书写格式 90
4.7.2 注释的使用 90
4.8 程序举例 92
习题 97
第5章 数组 105
5.1 一维数组 105
5.1.1 一维数组的定义 105
5.1.2 一维数组的初始化 106
5.1.3 一维数组程序举例 107
5.2 二维数组 111
5.2.1 二维数组的定义 112
5.2.2 二维数组的初始化 112
5.2.3 二维数组程序举例 114
5.3 字符数组 116
5.3.1 字符数组的定义 116
5.3.2 字符数组的初始化 117
5.3.3 字符数组的输入输出 118
5.3.4 字符串处理函数 120
5.3.5 字符数组程序举例 124
习题 127
第6章 函数 134
6.1 概述 134
6.2 函数的定义和调用 135
6.2.1 函数的定义 135
6.2.2 函数的调用 137
6.3 函数的参数及其传递方式 141
6.3.1 变量作函数参数 141
6.3.2 数组作函数参数 142
6.4 函数的嵌套调用和递归调用 149
6.4.1 函数的嵌套调用 149
6.4.2 函数的递归调用 153
6.5 变量的作用域及其存储类型 156
6.5.1 局部变量及其存储类型 156
6.5.2 全局变量及其存储类型 159
6.6 内部函数和外部函数 163
6.6.1 内部函数 163
6.6.2 外部函数 164
习题 169
第7章 编译预处理 175
7.1 概述 175
7.2 宏定义 175
7.2.1 不带参数的宏定义 175
7.2.2 符号常量 177
7.2.3 带参数的宏定义 177
7.3 文件包含 180
7.4 条件编译 181
7.5 程序举例 183
习题 184
第8章 结构体和共用体 187
8.1 结构体 187
8.1.1 结构体变量的定义 188
8.1.2 结构体变量的初始化 189
8.1.3 结构体变量的引用 190
8.1.4 结构体数组 191
8.1.5 结构体应用举例 192
8.2 共用体 193
8.2.1 共用体变量的定义 193
8.2.2 共用体变量的引用 194
8.2.3 共用体类型数据的特点 195
8.3 枚举类型 196
8.4 用typedef定义类型 198
习题 199
第9章 指针的概念 203
9.1 指针与地址 203
9.1.1 地址 203
9.1.2 指针 203
9.2 指针变量的定义 204
9.3 指针变量的操作 205
9.3.1 指针运算符 205
9.3.2 指针的赋值与比较 205
9.3.3 指针的算术运算 207
9.4 指针与数组 208
9.4.1 指针与一维数组 208
9.4.2 指针与字符串 211
9.4.3 指针与二维数组 214
9.4.4 指向数组的指针 217
9.5 程序举例 218
习题 219
第10章 指针与函数 225
10.1 函数的参数为指针 225
10.1.1 指针变量作函数参数 225
10.1.2 数组名作函数参数 228
10.1.3 指向一维数组的指针作函数的参数 232
10.2 函数的返回值为指针 234
10.3 指向函数的指针 236
10.3.1 通过指向函数的指针调用函数 236
10.3.2 函数指针作函数的参数 237
10.4 指针数组和指向指针的指针 238
10.4.1 指针数组 238
10.4.2 指向指针的指针 241
10.5 指针数组作main()函数的参数 242
10.6 void型指针 245
10.7 指针小结 245
10.7.1 与指针有关的变量说明 245
10.7.2 使用指针时易犯的错误 246
习题 247
第11章 指针与结构体 257
11.1 指针指向结构体 257
11.1.1 指向结构体变量的指针 257
11.1.2 指针指向结构体数组 258
11.2 结构体指针作函数参数 259
11.3 链表 261
11.3.1 动态存储分配 261
11.3.2 单链表 263
11.3.3 环形链表和双向链表 270
习题 272
第12章 位运算 277
12.1 二进制表示的整数及其位操作 277
12.1.1 二进制数位及其表示数的范围 277
12.1.2 负整数在机器中的表示 278
12.2 位运算符和位运算 279
12.2.1 "与"运算符 280
12.2.2 "或"运算符 281
12.2.3 "异或"运算符 281
12.2.4 "取反"运算符 283
12.2.5 "左移"运算符 284
12.2.6 "右移"运算符 284
12.2.7 位运算赋值运算符 285
12.2.8 不同长度的数据进行位运算 286
12.3 位运算举例 286
12.4 位段 288
习题 291
第13章 文件 294
13.1 文件的概念 294
13.2 文件的打开与关闭 295
13.2.1 文件的打开 295
13.2.2 文件的关闭 296
13.3 文件的读写 297
13.3.1 fputc和fgetc函数 297
13.3.2 fscanf和fprintf函数 299
13.3.3 fwrite和fread函数 300
13.4 文件的指针管理──文件的定位 302
13.4.1 rewind函数 302
13.4.2 fseek函数 302
13.4.3 ftell函数 303
13.5 非缓冲文件系统 303
13.5.1 打开文件函数 303
13.5.2 关闭文件函数 303
13.5.3 创建文件函数 304
13.5.4 成块读写函数 304
13.5.5 文件的定位函数 304
习题 305
附录A 常用字符及其ASCII代码 308
附录B C语言的运算符及其结合性 310
附录C C语言的库函数 312
附录D C语言中的关键字 319
参考文献 320