本书从高职高专学生的实际特点出发,以“实用、够用”为原则,采用通俗易懂的语言,通过具体的实例,深入浅出地介绍了C语言程序设计的基本概念和设计方法。全书共11章,介绍了C语言的数据类型、常量和变量、运算符和表达式,数据的输入/输出,顺序结构程序设计,选择结构程序设计,循环结构程序设计,数组的定义和使用方法,指针的定义和使用方法,C语言中函数的定义、调用、参数传递以及变量的作用域和存储类型,C语言的编译预处理指令,C语言的结构体与共用体,C语言文件的概念及操作等内容。本书中的全部例题和上机实训内容均在Visual C++6.0环境下调试通过,便于读者直接上机验证。
本书既可作为高职高专院校学生“C语言程序设计”课程的教材,也可作为全国计算机等级考试二级C语言的培训或自学教材。
C语言作为一种长盛不衰的程序设计语言,从产生到现在始终深受广大编程爱好者的喜爱。学习、掌握C语言是每一个计算机技术人员的基本功之一,大多数高职高专院校都将C语言作为典型的计算机教学语言。
C语言规则较多,对一般初学者来说不易掌握,学习起来会有一定的困难。根据作者多年从事C语言教学的经验来看,要让学生真正领会和掌握C语言,除了教师必须具备丰富的教学经验和利用C语言开发项目的能力以外,选择一本好的C语言教材是非常重要的。鉴于此,我们编写了本书。本书的作者都是长期在高校从事计算机专业教学的一线教师,有着丰富的C语言程序设计教学经验和一定的科研开发能力。
本书在体系结构上尽可能将概念、知识点与具体实例结合起来,帮助学生准确理解相关教学内容。另外,每章后面都有与所讲内容以及计算机二级等级考试相匹配的上机实训,以帮助学生加深对教学内容的理解和掌握,并提高学生C语言编程的实际动手能力。
此次修订,我们校正了第一版中的错误与不足之处,但由于水平有限,书中难免存在不足和疏漏的地方,敬请广大读者不吝赐教。
编 者
2023年4月
第1章 C语言概论 1
1.1 C语言程序介绍 1
1.1.1 C语言的发展 1
1.1.2 C语言的特点 1
1.2 C语言程序的组成 2
1.3 C语言程序的实现 4
1.3.1 C语言程序的运行过程 4
1.3.2 开发环境介绍 5
本章小结 9
实训 9
第2章 基本的数据类型与运算 10
2.1 一个简单的C程序设计实例 10
2.2 基本数据类型 11
2.2.1 整型 11
2.2.2 实型 12
2.2.3 字符型 12
2.3 常量和变量 12
2.3.1 常量 12
2.3.2 变量 14
2.4 运算符和表达式 15
2.4.1 算术运算符与算术表达式 15
2.4.2 赋值运算符与赋值表达式 16
2.4.3 数据类型转换 17
2.4.4 几个特殊的运算符 18
本章小结 19
实训 20
第3章 顺序结构程序设计 22
3.1 一个顺序结构程序实例 22
3.2 数据的输入/输出 23
3.2.1 输出函数printf( ) 23
3.2.2 输入函数scanf( ) 26
3.2.3 字符输入/输出函数getchar( )和
putchar( ) 27
3.3 应用举例 29
本章小结 30
实训 30
第4章 选择结构程序设计 32
4.1 一个选择结构程序实例 32
4.2 关系运算与逻辑运算 33
4.2.1 关系运算符与关系表达式 33
4.2.2 逻辑运算符与逻辑表达式 34
4.3 由if语句构成的选择结构 35
4.3.1 if语句 35
4.3.2 if-else语句 37
4.3.3 if-else-if形式 38
4.3.4 if的嵌套 39
4.3.5 条件表达式 40
4.4 switch语句和break语句 41
4.5 应用举例 43
本章小结 45
实训 46
第5章 循环结构程序设计 49
5.1 一个循环结构程序实例 49
5.2 while语句 50
5.3 do-while语句 52
5.4 for语句 54
5.5 多重循环 57
5.6 break语句和continue语句 60
5.6.1 break语句 60
5.6.2 continue语句 60
5.7 应用举例 61
本章小结 64
实训 64
第6章 数组 67
6.1 数组的一般定义形式 67
6.2 数组的表示方法 68
6.3 一维数组 69
6.3.1 一维数组的定义 69
6.3.2 一维数组的初始化 70
6.3.3 一维数组的引用 70
6.3.4 应用举例 71
6.4 二维数组 73
6.4.1 二维数组的定义 73
6.4.2 二维数组的初始化 74
6.4.3 二维数组的引用 74
6.4.4 应用举例 75
6.5 字符串 79
6.5.1 字符数组的一般操作方法 80
6.5.2 字符串处理函数 82
本章小结 85
实训 85
第7章 指针 88
7.1 指针的类型说明 88
7.2 指针变量的赋值 88
7.3 数组指针 92
7.3.1 数组指针的定义 92
7.3.2 数组指针的运算 92
7.3.3 二维数组的指针 96
7.4 指针数组 98
7.5 字符串指针 99
7.6 动态存储分配 99
7.7 应用举例 101
本章小结 102
实训 103
第8章 函数 105
8.1 函数的分类 105
8.2 函数的定义和调用 106
8.2.1 函数的定义 106
8.2.2 函数的调用和函数的返回 107
8.2.3 参数传递 108
8.2.4 函数的嵌套调用 114
8.3 变量的作用域 115
8.3.1 局部变量 115
8.3.2 全局变量 119
8.3.3 变量存储类型与模块化
程序设计 120
本章小结 121
实训 122
第9章 预处理指令 126
9.1 宏定义 126
9.1.1 字符串宏 126
9.1.2 带参数宏 127
9.1.3 函数与宏的比较 128
9.2 文件包含 128
9.3 条件编译 128
本章小结 133
实训 134
第10章 结构体与共用体 135
10.1 一个结构体的实例 135
10.2 结构体的定义与引用 136
10.2.1 结构体类型的定义 136
10.2.2 结构体变量的定义及初始化 137
10.2.3 结构体变量的使用 139
10.3 结构体数组与结构体指针 140
10.3.1 结构体数组 140
10.3.2 结构体指针 142
10.4 链表 143
10.4.1 链表概述 144
10.4.2 链表的基本操作 146
10.5 共用体 156
10.5.1 共用体类型和共用体变量的
定义 157
10.5.2 共用体成员变量的引用 157
10.6 枚举 158
10.7 typedef声明 159
本章小结 160
实训 161
第11章 文件 163
11.1 文件概述 163
11.1.1 文件的概念和类型 163
11.1.2 文件指针 164
11.2 文件的基本操作 164
11.2.1 文件的打开和关闭 164
11.2.2 文件的读/写 165
11.3 应用举例 167
本章小结 174
实训 175
附录 模拟试题 176
模拟试题一 176
模拟试题二 180
模拟试题三 184
参考文献 188