图书简介:
程序设计基础篇
第1章 C语言概述 1
1.1 程序设计语言的发展过程 1
1.1.1 机器语言(第一代语言) 1
1.1.2 汇编语言(第二代语言) 1
1.1.3 高级语言 1
1.2 C语言简介 2
1.2.1 C语言的发展 2
1.2.2 C语言的特点 2
1.2.3 C语言和C++语言 3
1.3 C语言程序的结构 3
1.3.1 简单的C语言程序 3
1.3.2 C语言程序的结构 6
1.4 C语言程序的运行步骤和集成开发环境 7
1.4.1 C语言程序的运行步骤 7
1.4.2 C语言的集成开发环境 8
小结 9
习题1 9
第2章 数据类型、运算符与表达式 11
2.1 C语言数据类型概述 11
2.2 常量 12
2.2.1 常量的概念 12
2.2.2 符号常量 12
2.2.3 整型常量 13
2.2.4 实型常量 14
2.2.5 字符常量 15
2.2.6 字符串常量 17
2.3 变量 18
2.3.1 变量的概念及其应用 18
2.3.2 整型变量 18
2.3.3 实型变量 20
2.3.4 字符型变量 22
2.4 算术运算符和算术表达式 24
2.4.1 运算符概述 24
2.4.2 算术运算符和算术表达式 25
2.5 赋值运算符和赋值表达式 27
2.5.1 赋值运算符 27
2.5.2 赋值表达式及其值 27
2.5.3 复合赋值运算符 28
2.6 逗号运算符和逗号表达式 29
2.7 数据类型转换 30
2.7.1 数据类型的自动转换 30
2.7.2 数据类型的强制转换 32
小结 33
习题2 33
第3章 顺序结构程序设计 36
3.1 结构化程序设计方法 36
3.1.1 自顶向下、逐步求精、模块化的结构化程序设计方法 36
3.1.2 程序的结构 36
3.2 C语句概述 37
3.2.1 表达式语句 38
3.2.2 函数调用语句 39
3.2.3 控制语句 39
3.2.4 复合语句 39
3.2.5 空语句 40
3.3 程序的注释 40
3.4 数据的输入和输出 40
3.4.1 输入和输出的基本概念 40
3.4.2 输入和输出的实现 41
3.5 字符数据输入和输出函数 41
3.5.1 字符输入函数getchar( ) 41
3.5.2 字符输出函数putchar( ) 42
3.6 格式输入和输出函数 42
3.6.1 格式输入函数scanf( ) 42
3.6.2 格式输出函数printf( ) 46
3.7 顺序结构程序设计举例 50
小结 54
习题3 54
第4章 选择结构程序设计 57
4.1 关系运算符和关系表达式 57
4.1.1 关系运算符及其优先级和结合性 57
4.1.2 关系表达式 57
4.1.3 使用关系运算符应注意的问题 58
4.2 逻辑运算符和逻辑表达式 59
4.2.1 逻辑运算符及其优先级和结合性 59
4.2.2 逻辑表达式 60
4.2.3 使用逻辑运算符应注意的问题 60
4.3 if语句 61
4.3.1 选择结构引例 61
4.3.2 if-else双分支结构 62
4.3.3 if单分支结构 66
4.3.4 if语句嵌套形成多分支结构 68
4.4 条件运算符和条件表达式 74
4.4.1 条件运算符 74
4.4.2 条件表达式和求值规则 74
4.5 switch语句 76
4.5.1 switch语句的一般形式 76
4.5.2 switch语句的功能 76
4.5.3 switch语句使用说明 78
4.6 选择结构程序设计举例 79
4.7 switch语句与多分支if语句的比较 84
小结 84
习题4 84
第5章 循环结构程序设计 89
5.1 循环结构的引入 89
5.2 三种实现循环结构的语句 89
5.2.1 while语句 89
5.2.2 do-while语句 92
5.2.3 for语句 93
5.3 break语句和continue语句 100
5.3.1 break语句 100
5.3.2 continue语句 101
5.4 循环嵌套 102
5.4.1 循环嵌套的概念 102
5.4.2 循环嵌套常见的形式 102
5.4.3 循环嵌套的执行过程 102
5.4.4 使用注意事项 103
5.5 综合程序设计 104
5.5.1 穷举法 104
5.5.2 递推法 108
5.5.3 迭代法 110
小结 114
习题5 114
第6章 数组 118
6.1 数组的引入 118
6.1.1 问题的提出 118
6.1.2 数组的基本概念 119
6.1.3 数组的分类 120
6.2 一维数组 120
6.2.1 一维数组的定义 120
6.2.2 一维数组的引用 120
6.2.3 一维数组的存储 121
6.2.4 一维数组的初始化 121
6.2.5 一维数组的应用举例 123
6.3 多维数组 131
6.3.1 二维数组的定义 131
6.3.2 二维数组的引用 132
6.3.3 二维数组的存储 133
6.3.4 二维数组的初始化 133
6.3.5 二维数组应用举例 133
6.4 字符数组 138
6.4.1 字符数组的定义与初始化 138
6.4.2 字符数组的输入和输出 139
6.4.3 常用的字符串处理函数 141
6.4.4 字符数组的应用举例 144
小结 147
习题6 147
第7章 函数 151
7.1 函数引入 151
7.2 函数定义 154
7.2.1 函数定义的一般形式 154
7.2.2 函数定义的说明 155
7.3 函数调用 156
7.3.1 函数调用的方法 157
7.3.2 函数调用的数据传递 159
7.3.3 函数调用的过程 160
7.3.4 函数的返回值 161
7.4 函数声明 162
7.4.1 函数声明的形式 163
7.4.2 函数声明的位置 163
7.5 函数的嵌套调用和递归调用 165
7.5.1 函数的嵌套调用 165
7.5.2 函数的递归调用 166
7.6 数组作为函数参数 170
7.6.1 问题的提出 170
7.6.2 数组作为函数参数的形式 171
7.7 变量的作用域及存储类别 180
7.7.1 变量的作用域 180
7.7.2 变量的存储类别 184
7.7.3 变量的作用域和存储类别小结 188
7.8 多文件程序 189
小结 191
习题7 191
第8章 预处理命令 195
8.1 宏定义 195
8.2 文件包含 200
8.3 条件编译 201
小结 202
习题8 202
程序设计进阶篇
第9章 指针 206
9.1 指针的概念 206
9.2 访问变量的地址 207
9.3 定义及初始化指针变量 208
9.3.1 定义指针变量 208
9.3.2 初始化指针变量 209
9.4 通过指针访问变量 210
9.5 指针的运算 213
9.5.1 指针表达式 213
9.5.2 指针增加和比例因子 215
9.6 指针和数组 215
9.6.1 指针和一维数组 215
9.6.2 用指针引用数组元素 216
9.6.3 指针和二维数组 219
9.7 指针和字符串 222
9.7.1 指向字符的指针 222
9.7.2 指向字符串的指针 223
9.8 指针与函数 224
9.8.1 用指针变量作为函数参数 224
9.8.2 用指针变量作为函数返回值 226
9.8.3 指向函数的指针变量 227
9.9 二级指针和指针数组 229
9.9.1 二级指针 229
9.9.2 指针数组 230
小结 234
习题9 234
第10章 结构体与共用体 243
10.1 结构体引入 243
10.2 结构体变量的使用 244
10.2.1 结构体变量的定义 244
10.2.2 结构体变量的引用 246
10.2.3 结构体变量的初始化 247
10.2.4 结构体变量的使用 248
10.3 结构体数组 249
10.4 结构体变量作为函数的参数和返回值 251
10.5 结构体和指针 255
10.5.1 指向结构体变量的指针 255
10.5.2 指向结构体数组的指针 256
10.5.3 指向结构体变量的指针作为函数参数 258
10.5.4 函数返回值为指向结构体变量的指针 259
10.6 动态内存分配与链表 260
10.6.1 动态内存函数 261
10.6.2 用指针处理链表 262
10.6.3 链表的定义 264
10.6.4 链表的基本操作 264
10.7 共用体类型 270
10.7.1 共用体类型的定义 270
10.7.2 共用体变量的定义 270
10.7.3 共用体变量的使用 271
10.7.4 共用体实例 272
10.8 枚举类型 273
10.8.1 枚举类型的定义 273
10.8.2 枚举变量的定义 274
10.8.3 枚举变量的赋值和使用 274
10.9 自定义类型 275
小结 276
习题10 276
第11章 位运算 280
11.1 位运算符概述 280
11.1.1 与运算 280
11.1.2 或运算 282
11.1.3 异或运算 284
11.1.4 取反运算 285
11.1.5 移位运算 285
11.2 位运算赋值运算符 287
11.3 位域(位段) 287
11.3.1 位域的定义和位域变量的说明 287
11.3.2 位域的使用 288
小结 291
习题11 291
第12章 文件 293
12.1 文件概述 293
12.2 文件指针的定义 293
12.3 文件的基本操作 294
12.3.1 文件打开函数 294
12.3.2 文件关闭函数 295
12.3.3 文件检测函数 296
12.3.4 文件定位函数 296
12.3.5 字符读写函数 297
12.3.6 字符串读写函数 301
12.3.7 格式化读写函数 302
12.3.8 数据块读写函数 304
12.4 综合程序设计 305
小结 314
习题12 314
附录A 常用字符与ASCII码对照表 317
附录B 扩展ASCII码对照表 318
附录C C语言关键字 319
附录D C语言的9种控制语句 320
附录E C语言运算符的优先级与
结合性 321
附录F 常用的ANSI C标准库函数 323
参考文献 328
展开
前 言
C语言是目前世界上应用最广泛的一种结构化的程序设计语言。它既具有高级语言的功能,又具有低级语言的功能,它提供类型丰富、使用灵活的基本运算和数据类型,而且可移植性非常好。许多大型应用软件都是用C语言编写的,深受编程者的喜爱。
本书分为程序设计基础篇和程序设计进阶篇两大部分:基础篇介绍了C语言概述,数据类型、运算符与表达式,顺序结构程序设计,选择结构程序设计,循环结构程序设计,数组,函数及预处理命令;进阶篇主要介绍了指针,结构体与共用体,位运算及文件。
本书的主要特点如下。
1.知识点精练,实用性强
C语言程序设计课程的知识点繁多,为了让读者在学习C语言程序设计的过程中快速入门,本书对各个章节中的知识点进行了提炼,删减了一些不常用的知识点,增加了典型算法与综合程序设计的内容,使初学者能够快速掌握C语言程序设计的方法。
2.案例新颖,趣味性强
教材中的每个案例都经过精心设计,趣味性及实用性较强。通过这些案例,不仅可以提高读者学习C语言的兴趣,而且可以对所学知识点达到举一反三的效果,从而使读者更深刻地理解所学习的知识点。
3.注重程序代码的规范化
本书中的所有程序代码严格按照流行的C语言的书写规范进行编写,使读者在C语言学习中逐步养成良好的代码书写习惯,提高读者对程序设计严谨性、缜密性、规范性的认识,为培养优秀的程序员打下良好的基础。
4.通过实际案例学习知识点,提高分析问题和独立编写程序的能力
本书通过实际项目中的综合应用程序将C语言的知识点融为一体,使读者能够有目的性地学习C语言的各知识点。在每个综合应用程序中,通过需求分析、程序编写、调试运行等标准化程序设计的步骤,使读者较快地提高独立编写程序的能力,掌握标准化的程序设计方法。
本书配套实验指导书《C语言上机实验指导(第2版)》(刘欣亮、赵海霞主编),另外还配有网络版的教学平台及考试系统,并提供相关的教学资源(电子课件、例题源代码等)。需要的教师可登录华信教育资源网(www.hxedu.com.cn)注册后免费下载,也可与本书的编辑(dcc@phei.com.cn)联系获取。
本书由长期从事一线教学的教师和具有多年C语言实际项目编程经验的工程技术人员编写,获得了河南科技大学教材出版基金项目的资助。全书由普杰信教授负责主审,刘欣亮、李敏担任主编。韩同跃编写了第1、2章;张兵利编写了第3、4章;李敏编写了第5、6章;赵海霞编写了第7、8章;刘欣亮编写了第10、12章;薛冰冰编写了第9、11章。此外,孙素环、赵红英、韩爱意、张蕾,以及洛阳众智软件科技股份有限公司的技术人员参加了部分程序的调试工作。在本书的编写过程中,参阅并引用了国内外诸多同行的著作,在此向他们表示感谢。
由于作者学术水平有限,书中错误和不妥之处在所难免,敬请读者批评指正。
编 者
展开