本书主要介绍了C语言的数据类型、运算符和表达式、结构化程序设计语句、数组、函数、指针、复合数据类型、文件等各种典型内容。全书共9章,前8章分别介绍各种基础知识,通过大量案例和练习让读者掌握所学知识,第9章介绍了两个综合项目,分别是不带图形界面的管理信息系统和带图形界面的迷宫探险游戏。每章课后配有类型丰富的练习题,都是国家二级考试题,并提供了习题参考答案。本书对C语言各知识的阐述通俗易懂,习题的选择难易适当,题型丰富;对于在Turbo C 2.0和Visual C++6.0不同环境下运行结果不同的程序,给出两种环境下的运行结果,方便读者理解。书中所有程序均已调试运行通过,运行结果为截屏显示。本书既可作为高职高专院校计算机专业程序设计学科的教材,也可作为成人教育、自学考试和从事计算机应用的工程技术人员的参考书。本书配有视频讲解教程、配套教案、电子课件、源代码、习题参考答案等配套资源,可扫描二维码学习或登录电子工业出版社的华信教育资源网(www.hxedu.com.cn)注册后免费下载。
刘畅,副教授,毕业于沈阳理工大学,硕士。十多年来一直从事于计算机软件方面开发与授课工作。现任计算机系软件技术教研室主任,软件专业骨干教师(在高等学校骨干教师资源信息库备案)。
第1章 C语言概述 1
1.1 程序设计的基本概念 1
1.1.1 程序的概念 1
1.1.2 程序设计的一般过程 2
1.1.3 程序设计的方法 2
1.2 C语言简介 2
1.2.1 C语言的发展 2
1.2.2 C语言的特点 2
1.2.3 C语言的书写规则 3
1.2.4 C程序的几种类型文件 3
1.3 C语言程序案例 4
1.3.1 第一个C语言程序 4
1.3.2 定义符号常量的C语言程序 5
1.3.3 有多个函数的C语言程序 6
1.4 算法 6
1.4.1 算法概述 6
1.4.2 算法的图形表示 7
1.5 C语言编程环境 8
1.5.1 Turbo C 2.0编程环境 8
1.5.2 Visual C++ 6.0编程环境 10
1.5.3 “C/C++程序设计学习与实验
系统”编程环境 12
本章小结 14
学生自我完善练习 15
习题一 15
第2章 程序中的数据 17
2.1 数据类型、变量与常量 17
2.1.1 数据类型概述 17
2.1.2 标识符 18
2.1.3 变量的定义、赋值和初始化 19
2.1.4 数的原码、反码和补码 20
2.1.5 整型变量及整型常量 21
2.1.6 实型变量及实型常量 23
2.1.7 字符变量及字符常量、字符串
常量 24
2.1.8 符号常量 27
2.2 运算符与表达式 27
2.2.1 算术运算符与算术表达式 28
2.2.2 自增、自减运算符(++、--) 29
2.2.3 赋值运算符与赋值表达式 31
2.2.4 关系运算符与关系表达式 32
2.2.5 逻辑运算符与逻辑表达式 33
2.2.6 位运算符 34
2.2.7 其他运算符 36
2.3 数据类型转换及数据的溢出误差 38
2.3.1 类型转换概述 38
2.3.2 自动类型转换 39
2.3.3 赋值类型转换 39
2.3.4 强制类型转换 40
2.3.5 数据的溢出和误差 40
2.4 数据的输入/输出 42
2.4.1 格式化输出函数printf 42
2.4.2 格式化输入函数scanf 45
2.4.3 字符的输入与输出 49
2.5 程序案例 50
2.5.1 典型案例—求直角三角形的
周长和面积 50
2.5.2 典型案例—英文大小写字母
的转换 51
本章小结 52
学生自我完善练习 52
习题二 54
第3章 程序设计语句 57
3.1 程序的语句与结构 57
3.1.1 程序的语句 57
3.1.2 程序的结构 59
3.1.3 如何设计C语言程序 60
3.1.4 顺序结构 60
3.2 选择结构 61
3.2.1 条件语句——if语句 62
3.2.2 开关语句——switch语句 67
3.3 循环结构 69
3.3.1 程序的设计过程 69
3.3.2 当型循环—while循环 70
3.3.3 直到型循环—do-while循环 71
3.3.4 格式化的当型循环—for循环 73
3.3.5 循环的嵌套 74
3.4 break、continue和goto语句 76
3.4.1 break语句 77
3.4.2 continue语句 78
3.4.3 goto语句 78
3.5 程序案例 79
3.5.1 典型案例—求四项表达式
的值 79
3.5.2 典型案例—求1+(1+2)+
(1+2+3)+(1+2+3+4)+…+(1+2+
…+n)数列的和 80
3.5.3 典型案例—猜数字游戏 81
本章小结 82
学生自我完善练习 83
习题三 84
第4章 数组 90
4.1 数组概念的引入 90
4.2 一维数组 91
4.2.1 一维数组的定义 91
4.2.2 一维数据的元素引用 91
4.2.3 一维数组的赋值方法 91
4.3 二维数组 93
4.3.1 二维数组的定义 93
4.3.2 二维数组的元素引用 94
4.3.3 二维数组的存储 94
4.3.4 二维数据的赋值方法 95
4.4 字符数组与字符串 96
4.4.1 字符数组的定义、初始化和
引用 96
4.4.2 字符串的输入和输出函数 97
4.4.3 字符串函数 100
4.5 程序案例 103
4.5.1 典型案例—冒泡法排序 103
4.5.2 典型案例—矩阵的转置 105
4.5.3 典型案例—打印杨辉三角形 106
本章小结 107
学生自我完善练习 107
习题四 110
第5章 函数和编译预处理 114
5.1 模块化的设计思想 114
5.2 函数的定义、调用和函数声明 115
5.2.1 函数的定义 115
5.2.2 函数的调用 116
5.2.3 函数的声明 117
5.3 函数的参数传递 119
5.4 函数的嵌套调用 121
5.5 函数的递归调用 123
5.6 变量的作用域和存储类型 125
5.6.1 变量的作用域 125
5.6.2 变量的生存期 125
5.6.3 变量的存储类型 126
5.7 编译预处理 130
5.7.1 宏定义 130
5.7.2 文件包含 133
5.7.3 条件编译 133
5.8 程序案例 135
5.8.1 典型案例—编写函数求xn 135
5.8.2 典型案例—设计递归函数
gcd(x,y) 136
5.8.3 典型案例—设计函数验证
任意偶数为两个素数之和 137
5.8.4 典型案例—编写函数实现
任意进制数的转换 139
本章小结 140
学生自我完善练习 141
习题五 144
第6章 指针 152
6.1 地址和指针的关系 152
6.2 指针变量的定义和赋值 153
6.2.1 指针变量的定义及初始化 153
6.2.2 指针变量的赋值 153
6.3 指针变量的运算 154
*6.3.1 运算符和&运算符 154
6.3.2 指针的算术运算和关系运算 154
6.4 指针和数组的关系 156
6.4.1 指针与一维数组 156
6.4.2 指针与字符数组 158
6.4.3 指针与二维数组 160
6.4.4 指针数组 162
6.4.5 指向指针的指针—二级指针 163
6.5 指针在函数中的应用 165
6.5.1 函数的参数是指针 165
6.5.2 函数的返回值是指针 166
6.5.3 指向函数的指针 167
6.5.4 带参数的main函数 169
6.6 程序案例 170
6.6.1 典型案例—用指针统计字符
串中各字符个数 170
6.6.2 典型案例—找出多个字符串中
最长字符串 171
6.6.3 典型案例—将矩阵元素右移 172
本章小结 174
学生自我完善练习 174
习题六 176
第7章 复合的数据类型 181
7.1 结构概念的引入 181
7.2 结构体的描述与存储 182
7.2.1 结构体类型定义 182
7.2.2 结构体变量定义 183
7.2.3 结构体变量初始化 184
7.2.4 结构体变量和成员的引用及
赋值 184
7.2.5 结构体变量的空间分配及查看
方法 185
7.2.6 结构体类型的嵌套定义 186
7.3 结构体数组和结构体指针的使用 188
7.3.1 结构体数组 188
7.3.2 结构体指针 189
7.4 结构体与函数的关系 191
7.4.1 结构体变量、指针和数组作为
函数参数 191
7.4.2 结构体变量和指针作为函数的
返回值 193
7.5 共用体、枚举和typedef类型定义 196
7.5.1 共用体 196
7.5.2 枚举 200
7.5.3 typedef重命名类型 202
*7.6 链表 203
7.6.1 链表基础知识及动态分配函数 203
7.6.2 链表的操作 205
7.7 程序案例 210
7.7.1 典型案例—用“结构”统计
学生成绩并排序 210
7.7.2 典型案例—枚举示例,输出
52张扑克牌 212
本章小结 213
学生自我完善练习 213
习题七 215
第8章 文件 221
8.1 文件的概念和基本操作 221
8.1.1 文件的概念 221
8.1.2 文件的打开和关闭 223
8.2 文件的读和写 225
8.2.1 字符的读、写函数 225
8.2.2 字符串的读、写函数 226
8.2.3 数据块的读、写函数 228
8.2.4 格式化输入/输出文件函数 230
8.3 文件的定位和检测 233
8.3.1 文件的定位 233
8.3.2 文件的检测 236
8.4 程序案例 237
8.4.1 典型案例——文件的字符串
读写程序实现人员登录功能 237
8.4.2 典型案例—文件中的字数
统计程序 238
本章小结 240
学生自我完善练习 241
习题八 242
第9章 综合训练项目 245
9.1 不带图形界面的综合项目—管理
信息系统 245
9.1.1 项目功能介绍与系统结构
分析 245
9.1.2 各功能模块功能简介 245
9.1.3 源程序及运行结果 247
*9.2 图形界面综合项目—迷宫探险
游戏 255
9.2.1 项目功能介绍与系统结构分析 255
9.2.2 各功能模块功能简介 255
9.2.3 源程序及运行结果 256
附录A 常用字符与ASCII码对照表 266
参考文献 268