图书简介:
目 录
第1章 C语言与程序设计简介 1
1.1 计算机和程序设计的基本概念 1
1.1.1 计算机系统的组成 1
1.1.2 程序与程序设计语言 2
1.2 C语言的发展历程和特点 4
1.2.1 C语言发展历程 4
1.2.2 C语言的主要特点 5
1.3 C语言程序的基本组成 6
习题1 8
第2章 C语言程序设计基础 10
2.1 C语言基本符号与基本数据类型 10
2.1.1 C语言基本符号 10
2.1.2 C语言的数据类型 12
2.2 常量 13
2.2.1 整型常量、实型常量及符号常量 14
2.2.2 字符常量与字符串常量 15
2.3 变量 17
2.3.1 变量的概念、定义与初始化 17
2.3.2 整型变量、实型变量与字符型变量 19
2.4 运算符与表达式 24
2.4.1 C语言运算符简介 24
2.4.2 算术运算符与算术表达式 26
2.4.3 关系运算符与关系表达式 28
2.4.4 逻辑运算符与逻辑表达式 30
2.4.5 赋值运算符与复合赋值运算符 32
2.4.6 表达式中数据类型的自动转换和强制转换 34
2.5 数据的输入/输出 36
2.5.1 字符输入/输出函数 36
2.5.2 格式输出函数 37
2.5.3 格式输入函数 41
习题2 45
第3章 三种基本结构的程序设计 50
3.1 程序的基本结构及C程序中的语句分类 50
3.1.1 程序的基本结构 50
3.1.2 C程序中的语句分类 51
3.2 顺序结构程序设计 53
3.2.1 赋值语句 53
3.2.2 顺序结构程序 54
3.3 选择结构程序设计 56
3.3.1 if语句 56
3.3.2 if语句的嵌套 60
3.3.3 条件运算符与条件表达式 62
3.3.4 switch语句 63
3.4 循环结构程序设计 67
3.4.1 while语句 67
3.4.2 do…while语句 70
3.4.3 for语句 72
3.4.4 逗号运算符与逗号表达式 75
3.4.5 break语句、continue语句和goto语句 76
3.4.6 循环嵌套 79
3.5 典型例题精讲 82
习题3 98
第4章 数组 108
4.1 一维数组 108
4.1.1 一维数组的定义 108
4.1.2 一维数组的引用和初始化 109
4.2 二维数组 113
4.2.1 二维数组的定义 113
4.2.2 二维数组的引用和初始化 114
4.3 字符数组和字符串 116
4.3.1 字符数组的定义、引用及初始化 116
4.3.2 字符串 119
4.3.3 常用字符串处理函数 121
4.4 典型例题精讲 125
习题4 133
第5章 函数 140
5.1 函数的概念及特点 140
5.1.1 函数的概念 140
5.1.2 函数的分类 140
5.2 函数的定义和调用 141
5.2.1 函数的定义 141
5.2.2 函数的调用和返回值 143
5.2.3 函数执行的分析方法 145
5.2.4 函数的声明 146
5.3 变量的作用域 147
5.3.1 全局变量与局部变量 147
5.3.2 函数的副作用 149
5.4 函数的嵌套与递归 149
5.4.1 函数的嵌套调用 149
5.4.2 函数的递归调用 151
5.5 典型例题精讲 154
5.6 递归转化为非递归研究 162
5.6.1 汉诺塔问题递归解法 162
5.6.2 汉诺塔问题非递归解法 165
5.6.3 八皇后问题递归解法 167
5.6.4 八皇后问题非递归解法 169
习题5 171
第6章 指针 178
6.1 指针和指针变量 178
6.1.1 地址和指针的概念 178
6.1.2 指针变量的定义和初始化 179
6.1.3 指针变量的引用和运算 180
6.2 指针变量与数组 184
6.2.1 指针变量与一维数组 184
6.2.2 指针变量与二维数组 187
6.2.3 指针数组 192
6.3 指针变量与字符串及多级指针变量 194
6.3.1 指针变量与字符串 194
6.3.2 多级指针变量 196
6.4 指针变量与函数 198
6.4.1 指针变量作为函数参数 198
6.4.2 用数组名作函数参数 201
6.4.3 返回指针值的函数 205
*6.5 动态数组 206
6.6 典型例题精讲 208
习题6 215
第7章 结构体 223
7.1 结构体类型的定义与结构体变量 223
7.1.1 结构体类型的定义 223
7.1.2 结构体变量 226
7.1.3 用typedef定义类型标识符 231
7.2 结构体数组及指向结构体的指针变量 234
7.2.1 结构体数组 234
7.2.2 指向结构体的指针变量 236
7.3 链表 240
7.3.1 链表的概念 240
7.3.2 动态存储分配 241
7.3.3 动态链表的建立与查找 243
7.3.4 链表节点的插入与删除 246
7.4 共用体 250
7.4.1 共用体的概念与定义 250
7.4.2 共用体变量的引用和赋值 252
7.5 典型例题精讲 255
习题7 262
第8章 文件 271
8.1 文件的概念 271
8.1.1 文件的分类 271
8.1.2 文件指针变量及文件操作过程 272
8.2 文件的打开与关闭 273
8.2.1 文件的打开 273
8.2.2 文件的关闭 275
8.3 文件的读/写 276
8.3.1 字符读/写函数 276
8.3.2 字符串读/写函数 279
8.3.3 数据块读/写函数 280
8.3.4 格式化读/写函数 282
8.4 文件的定位与随机读/写 283
8.5 典型例题精讲 287
习题8 292
第9章 C语言与程序设计补遗 296
9.1 变量的存储类别与生命期 296
9.2 指向函数的指针变量 300
9.3 带参数的main函数 304
9.4 编译预处理命令 306
9.4.1 宏定义命令 306
9.4.2 文件包含命令 309
9.5 枚举类型 312
9.6 位运算 315
习题9 319
附录 324
附录1 ASCII表 324
附录2 C语言中的运算符及其优先级 325
附录3 常用C语言库函数 326
参考文献 328
展开
前 言
本书作为程序设计课程的教材,在结构上注重知识的系统性、完整性和连贯性,在讲授中循序渐进、深入浅出,将理论与实践有机结合,融知识传授与能力培养于一体。
作者在总结多年教学与实践的基础上,精选了大量内容生动、设计独到的例题作为典型概念示例和程序精讲,这些例题还兼顾了C语言等级考试,许多例题选自历年二级C语言程序设计的考题。全书给出了400多道例题和习题,并且所有程序例题与习题都在VC++6.0环境下上机通过。在例题分析中采用了大量图示说明,这样使例题的理解更加一目了然。对重点章节如函数和指针内容,作者采用了独创的动态图分析方法来分析程序执行中函数或指针的变化情况,使函数和指针内容中难以掌握的部分迎刃而解。此外,对采用指针来指向数组元素的相关内容,作者采用了新颖的表述方法来解决同一个数组元素有多种表示法的问题。对于文件的讲解,作者也辅以图例来进行说明,以便读者能够深入了解文件内部的读/写过程。
本书第1章介绍计算机和程序设计的基本概念,并在此基础上介绍C语言的发展历程和特点,同时还介绍C语言程序的基本组成以及在Visual C++环境下的上机操作。第2章介绍有关C语言程序设计的基础知识,包括C语言的基本符号与基本数据类型,C语言常量、变量的概念和使用规则,C语言的运算符与表达式以及对C语言数据的输入和输出方法。第3章介绍如何使用顺序、选择和循环这三种基本结构来进行程序设计,这是程序设计最基本的内容,也是真正掌握编程的一条必经之路。第4章的数组实际上是一个“量”的扩展,即由对少量的个别数据的处理编程扩展到对大量的成批数据的处理编程,因此引入了存放成批数据的数据结构——数组。第5章的函数实际上是对“程序结构”的扩展,即程序由单一的主函数扩展到多个函数时如何定义和调用这些函数?参数如何在函数之间传递?计算结果又如何由被调函数返回?这些都将在第5章中得到解答。第6章的指针实际上是对变量访问的扩展,通过指针可以有效地表示各种复杂的数据结构,进而编写出精炼且高效的程序。第7章的结构体是在第4章数组简单“量”的扩展基础上的又一个更高层次的扩展,即将不同的简单“量”组合在一起形成一个复杂的“量”——结构体,进而也可以形成一批结构体的“量”。第8章介绍C语言程序如何处理来自外存的数据,即如何与外存文件中的数据打交道。此外,对于那些与各章内容没有紧密联系或无关紧要又较少使用的内容,则统统归于第9章,这样使各章的知识更加紧凑、清晰和精炼。本书在章节内容与安排上也进行了调整,在第3章至第8章的最后均增加了一节“典型例题精讲”,以利于开拓读者解题思路和提高读者编程能力,以达到举一反三的目的。本书所讲授的内容均基于VC++环境。
本书与配套的教材《C语言与程序设计习题解析及上机指导》配合使用将会得到更好的学习效果。书中带“*”的内容为选讲内容,可根据讲授的学时数进行取舍。另外,本书的配套教学资源可在华信教育资源网(www.hxedu.com.cn)上进行下载。
欢迎读者对本书的内容及本书中作者的某些见解和表述方法提出批评指正。
编 者
2019年7月
展开