《C语言程序设计教程(第2版)》是2011年2月21日机械工业出版社出版的图书,作者是朱鸣华。
本书介绍利用c语言进行程序设计的基本知识。全书共13章,详细介绍了c语言的基本概念、算法与程序设计基础、数据的输入和输出、选择结构、循环结构、数组、函数、指针、结构体与共用体、文件、面向对象程序设计与c++基础以及数据结构基础等内容。每章配有大量的习题,便于读者巩固所学知识,掌握程序设计的基本方法和编程技巧。
本书力求概念叙述准确、严谨,语言通俗易懂,适合作为高等院校理工科非计算机专业的“c语言程序设计”课程的教材,也可供工程技术人员参考。
目录
- 第2版前言
- 第1版前言
- 教学建议
- 第1章 c语言概述 1
- 1.1 c语言发展简史 1
- 1.2 c语言的特点 2
- 1.3 简单c语言程序举例 2
- 1.4 c语言程序的组成与结构 3
- 1.5 c语言程序的开发步骤 5
- 小结 6
- 习题 6
- 第2章 算法与程序设计基础 7
- 2.1 算法概述 7
- 2.1.1 算法的概念 7
- 2.1.2 算法的特征 7
- 2.2 算法的常用表示方法 8
- 2.2.1 自然语言 8
- 2.2.2 流程图 8
- 2.2.3 n-s流程图 9
- 2.3 程序设计典型算法 11
- .2.4 结构化程序设计方法 12
- 小结 12
- 习题 12
- 第3章 数据类型、运算符与表达式 14
- 3.1 c语言的基本符号 14
- 3.1.1 标识符 14
- 3.1.2 常量 14
- 3.1.3 变量 15
- 3.1.4 关键字 16
- 3.2 c 语言的数据类型 16
- 3.2.1 整型数据 16
- 3.2.2 实型数据 19
- 3.2.3 字符型数据 20
- 3.3 运算符和表达式 22
- 3.3.1 算术运算符和算术表达式 23
- 3.3.2 赋值运算符和赋值表达式 23
- 3.3.3 逗号运算符和逗号表达式 25
- 3.4 数据类型转换 25
- 3.4.1 不同数据类型的数据间的混合运算 25
- 3.4.2 强制类型转换 26
- 3.5 自增运算和自减运算 27
- 3.6 位运算 28
- 小结 30
- 习题 31
- 第4章 数据的输入和输出 33
- 4.1 数据的输出 33
- 4.1.1 格式输出函数printf 33
- 4.1.2 字符输出函数putchar 36
- 4.2 数据的输入 37
- 4.2.1 格式输入函数scanf 37
- 4.2.2 字符输入函数getchar 39
- 4.3 应用举例 41
- 小结 41
- 习题 42
- 第5章 选择结构 45
- 5.1 关系运算符和关系表达式 45
- 5.1.1 关系运算符 45
- 5.1.2 关系表达式 45
- 5.2 逻辑运算符和逻辑表达式 46
- 5.2.1 逻辑运算符 46
- 5.2.2 逻辑表达式 46
- 5.3 选择语句 47
- 5.3.1 if语句 47
- 5.3.2 if语句的嵌套 49
- 5.3.3 switch语句 50
- 5.4 条件运算符和条件表达式 51
- 5.5 应用举例 52
- 小结 55
- 习题 55
- 第6章 循环结构 58
- 6.1 goto语句与标号 58
- 6.2 while循环语句 59
- 6.3 do-while循环语句 60
- 6.4 for循环语句 62
- 6.5 三种循环语句的比较 64
- 6.6 循环嵌套 64
- 6.7 break语句、continue语句和空语句 66
- 6.7.1 break语句 66
- 6.7.2 continue语句 67
- 6.7.3 空语句 68
- 6.8 应用举例 69
- 小结 72
- 习题 72
- 第7章 数组 78
- 7.1 一维数组 78
- 7.1.1 一维数组的定义和引用 78
- 7.1.2 一维数组的初始化 79
- 7.1.3 一维数组程序举例 80
- 7.2 二维数组 82
- 7.2.1 二维数组的定义和引用 82
- 7.2.2 二维数组的初始化 83
- 7.2.3 二维数组程序举例 83
- 7.3 字符数组 86
- 7.3.1 字符数组的定义 86
- 7.3.2 字符数组的初始化 87
- 7.3.3 字符数组的引用 87
- 7.3.4 字符数组与字符串 88
- 7.3.5 字符数组的输入和输出 88
- 7.3.6 字符串处理函数 89
- 7.3.7 字符数组应用举例 91
- 小结 94
- 习题 94
- 第8章 函数 99
- 8.1 函数的基本概念 99
- 8.1.1 函数的概念 99
- 8.1.2 函数的定义 100
- 8.1.3 函数的调用 101
- 8.1.4 函数参数的传递方式 102
- 8.1.5 函数的返回值 103
- 8.1.6 函数的原型声明 105
- 8.2 数组作为函数参数 106
- 8.2.1 一维数组作为函数参数 106
- 8.2.2 二维数组作为函数参数 107
- 8.2.3 数组作为函数参数的函数调用方式 107
- 8.3 函数的嵌套调用和递归调用 110
- 8.3.1 函数的嵌套调用 110
- 8.3.2 函数的递归调用 111
- 8.4 变量的作用域和存储方法 114
- 8.4.1 局部变量和全局变量 114
- 8.4.2 变量的存储方法 117
- 8.5 内部函数和外部函数 120
- 8.6 编译预处理 121
- 8.6.1 宏定义 121
- 8.6.2 文件包含 123
- 8.6.3 条件编译 124
- 8.7 函数应用举例 125
- 小结 129
- 习题 130
- 第9章 指针 136
- 9.1 指针的基本概念及指针变量的定义 136
- 9.1.1 指针的基本概念 136
- 9.1.2 指针变量的定义方法 136
- 9.2 指针运算 137
- 9.2.1 赋值运算 137
- 9.2.2 取地址运算 137
- 9.2.3 取内容运算 138
- 9.2.4 指针表达式与整数相加、减运算 139
- 9.2.5 自增、自减运算 139
- 9.2.6 同类指针相减运算 140
- 9.2.7 关系运算 141
- 9.2.8 强制类型转换运算 141
- 9.2.9 空指针 141
- 9.3 指针变量与一维数组 142
- 9.3.1 指针变量与一维数组之间的联系和区别 142
- 9.3.2 字符串指针与字符串 143
- 9.4 指针与函数 144
- 9.4.1 指针作为函数参数 144
- 9.4.2 返回指针的函数 147
- 9.4.3 函数的指针和指向函数的指针变量 149
- 9.5 指针与二维数组 150
- 9.5.1 二维数组的结构 150
- 9.5.2 二维数组元素及其地址 151
- 9.5.3 指针数组 152
- 9.5.4 指针与字符串数组 153
- 9.5.5 指向数组的指针变量 155
- 9.6 二级指针 156
- 9.7 内存空间的动态分配 158
- 9.7.1 指向void的指针 158
- 9.7.2 常用内存管理函数 159
- 9.8 main函数的参数 160
- 9.8.1 命令行参数 160
- 9.8.2 指针数组作为main函数的形参 160
- 9.9 应用举例 161
- 小结 165
- 习题 166
- 第10章 结构体与共用体 173
- 10.1 结构体类型与结构体变量 173
- 10.1.1 结构体类型的定义 173
- 10.1.2 结构体变量的定义 174
- 10.1.3 结构体变量的引用 175
- 10.1.4 结构体变量的初始化 176
- 10.2 结构体数组 176
- 10.2.1 结构体数组的定义 176
- 10.2.2 结构体数组的引用 177
- 10.2.3 结构体数组的初始化 177
- 10.2.4 应用举例 178
- 10.3 结构体指针 179
- 10.3.1 结构体指针变量的定义 179
- 10.3.2 结构体数组指针 180
- 10.4 结构体类型数据在函数间的传递 181
- 10.4.1 结构体变量作为函数参数 181
- 10.4.2 结构体指针变量作为函数参数 182
- 10.4.3 结构体数组作为函数参数 183
- 10.4.4 应用举例 183
- 10.5 共用体 186
- 10.5.1 共用体类型的定义 186
- 10.5.2 共用体变量的定义 186
- 10.5.3 共用体变量的引用和初始化 187
- 10.6 枚举类型 190
- 10.6.1 枚举类型的说明 190
- 10.6.2 枚举型变量的定义 190
- 10.7 用typedef定义类型 192
- 10.8 链表及其简单操作 193
- 10.8.1 链表的概念 193
- 10.8.2 链表的基本操作 194
- 小结 196
- 习题 197
- 第11章 文件 200
- 11.1 文件概述 200
- 11.1.1 文件的概念 200
- 11.1.2 文件的分类 200
- 11.1.3 文件缓冲区 201
- 11.1.4 文件类型指针 201
- 11.2 文件的打开与关闭 202
- 11.2.1 打开文件 202
- 11.2.2 关闭文件 203
- 11.3 文件的顺序读写 203
- 11.3.1 格式化读写函数fscanf和fprintf 203
- 11.3.2 字符方式读写函数fgetc和fputc 203
- 11.3.3 数据块读写函数fread和fwrite 204
- 11.3.4 字符串读写函数fgets和fputs 205
- 11.4 文件的定位与随机读写 205
- 11.4.1 文件指针重定位函数rewind 205
- 11.4.2 随机读写函数fseek 206
- 11.4.3 其他相关函数 208
- 小结 208
- 习题 209
- 第12章 面向对象程序设计与c++基础 213
- 12.1 面向对象程序设计的基本概念 213
- 12.2 面向对象程序设计语言c++简介 215
- 12.2.1 c++程序结构 215
- 12.2.2 c++对c的补充 217
- 12.2.3 c++中的类 219
- 12.2.4 c++中的构造函数和析构函数 221
- 12.2.5 c++中的继承 223
- 12.2.6 c++中的多态性、函数重载和虚函数 224
- 小结 226
- 习题 227
- 第13 章 数据结构基础 228
- 13.1 概述 228
- 13.1.1 数据结构的基本概念 228
- 13.1.2 数据的逻辑结构与存储结构 229
- 13.2 线性表 230
- 13.2.1 线性表概述 230
- 13.2.2 线性表的存储 230
- 13.3 栈和队列 231
- 13.3.1 栈 231
- 13.3.2 队列 233
- 13.4 树与二叉树 235
- 13.4.1 树的定义 235
- 13.4.2 二叉树 236
- 13.4.3 哈夫曼树 239
- 13.5 图 242
- 13.5.1 图的定义 242
- 13.5.2 图的存储结构 243
- 小结 244
- 习题 244
- 习题参考答案 246
- 附录a c语言的关键字 250
- 附录b 双目算术运算中两边运算量类型转换规律 251
- 附录c 运算符的优先级和结合性 252
- 附录d 常用字符与ascii码对照表 253
- 附录e 常用库函数 255
- 参考文献 259