杨有安、陈维、曹惠雅、鲁丽编著的《C语言程序设计教程》在编写过程中以夯实学生程序设计的理论基础,培养学生程序设计的能力和养成良好的程序设计风格为宗旨,并结合编者多年从事程序设计教学和研究的经验,参考了大量同类教材,吸收其优点。本书的特点是:内容的编排符合高等院校学生的特点和认知规律,由浅人深,循序渐进,通俗易懂;通过例题介绍C程序设计的基本方法与基本技巧;通过习题训练学生程序设计的技能,是一本适合初次学习程序设计的读者学习C语言的书籍。
本书是大学计算机和相关专业的“C程序设计”课程的教材,可作为高等学校、各类职业技术学院、各类培训学校的计算机应用教科书及计算机等级考试的参考书,也可以作为企事业单位员工、国家公务员计算机技能培训用书,还可以作为渴望掌握计算机基础知识和基本操作的各类初学者的自学用书。
杨有安、陈维、曹惠雅、鲁丽编著的《C语言程序设计教程》根据全国高等学校计算机基础教育研究会发布的“中国高等院校计算机基础教育课程体系2008”的计算机基础教育的纲领性文件中有关“程序设计”课程的教学要求及人才培养的新要求编写而成。全书共11章,主要内容包括C语言的基本概念、变量、运算符、表达式、顺序结构、分支结构、循环结构、数组、函数、指针、结构体、联合体和枚举类型、预处理和标准函数、文件、数据结构和数据抽象。同时,还将介绍程序设计的基本方法和常用算法。
《C语言程序设计教程》内容全面,由浅入深,详略得当,注重实践,实例丰富,面向应用。各章附有适量的习题,便于自学。另外,针对书中各章内容和上机实验,本书还配有辅导教材《C语言程序设计实践教程》,引导读者学习和掌握各章节的知识。全书贯彻传授知识、培养能力、提高素质的教学理念。
《C语言程序设计教程》为高等学校非计算机专业“C语言程序设计”课程的教材,也可以作为初次学习C语言程序设计的读者、准备计算机二级考试者和计算机工程技术人员的参考书。
第1章 C语言概述 1
1.1 C语言的发展和特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的主要特点 1
1.2 C语言的词汇 2
1.2.1 C语言字符集 3
1.2.2 关键字 3
1.2.3 标识符 3
1.2.4 保留标识符 4
1.2.5 注释 4
1.3 C程序的结构 4
1.3.1 简单C程序举例 4
1.3.2 C语言程序的结构特点 6
1.3.3 书写程序时应遵循的规则 7
1.4 Visual C++ 6.0上机简介 7
1.4.1 Visual C++ 6.0集成开发环境简介 7
1.4.2 Visual C++ 6.0集成环境上机步骤 9
小结 13
习题 13
第2章 基本数据类型和运算符 15
2.1 基本数据类型 15
2.1.1 常量和变量的概念 16
2.1.2 常量类型 17
2.1.3 变量类型 20
2.2 运算符和表达式 25
2.2.1 算术运算符与算术表达式 27
2.2.2 赋值运算符与赋值表达式 28
2.2.3 增量运算符与增量表达式 32
2.2.4 逻辑运算符与逻辑表达式 33
2.2.5 关系运算符与关系表达式 35
2.2.6 条件运算符与条件表达式 36
2.2.7 逗号运算符与逗号表达式 38
2.2.8 运算符的优先级与结合性 38
2.3 数据类型的转换 39
2.3.1 自动转换 39
2.3.2 赋值转换 40
2.3.3 强制类型转换 40
小结 41
习题 41
第3章 顺序和选择结构程序设计 45
3.1 程序设计概述 45
3.1.1 程序设计基本步骤 45
3.1.2 C语言编写风格 46
3.1.3 语句 46
3.2 scanf()函数和字符输入/输出函数调用 47
3.2.1 数据输入的概念 47
3.2.2 scanf()函数的调用 47
3.2.3 getchar()函数 49
3.2.4 putchar()函数 50
3.3 程序的3种基本结构 51
3.4 if选择结构语句 52
3.4.1 if语句的3种形式 52
3.4.2 if语句的嵌套 56
3.5 switch选择结构语句 58
3.6 程序设计举例 61
小结 65
习题 65
第4章 循环结构程序设计 70
4.1 for循环 70
4.2 while循环 72
4.3 do-while循环 74
4.4 3种循环语句的比较 76
4.5 跳转语句 76
4.5.1 break语句 76
4.5.2 continue语句 77
4.5.3 goto语句 78
4.6 循环语句的嵌套 79
4.7 程序设计举例 82
小结 88
习题 89
第5章 数组 92
5.1 一维数组 92
5.1.1 一维数组的定义 92
5.1.2 一维数组元素的引用 93
5.1.3 一维数组元素的初始化 95
5.2 二维数组 96
5.2.1 二维数组的定义 96
5.2.2 二维数组元素的引用 97
5.2.3 二维数组元素的初始化 98
5.3 字符型数组 100
5.3.1 字符数组的定义 101
5.3.2 字符数组的引用 101
5.3.3 字符数组的初始化 102
5.3.4 字符串及其结束标志 103
5.3.5 字符数组的输入/输出 104
5.3.6 常用的字符串处理函数 106
5.4 使用数组的程序设计方法 109
5.4.1 排序 110
5.4.2 查找 112
5.5 程序设计举例 114
小结 117
习题 118
第6章 函数和模块设计 122
6.1 结构化程序设计 122
6.1.1 结构化程序设计的基本概念 122
6.1.2 结构化程序设计的基本特征 123
6.2 函数的定义和调用 124
6.2.1 函数的定义 124
6.2.2 函数的调用 125
6.2.3 函数的返回值 128
6.2.4 函数参数及函数间的数据传递 131
6.3 函数的嵌套调用和递归调用 136
6.3.1 函数的嵌套调用 136
6.3.2 函数的递归调用 139
6.4 作用域和存储类型 141
6.5 内部函数和外部函数 148
6.5.1 内部函数 148
6.5.2 外部函数 148
6.6 模块化程序设计 150
6.6.1 模块化程序设计方法的指导思想 150
6.6.2 模块分解的原则 150
6.7 程序设计举例 151
小结 156
习题 156
第7章 指针 159
7.1 指针的概念 159
7.1.1 地址与指针 159
7.1.2 指针变量的定义和引用 160
7.1.3 指针变量的运算 162
7.2 指针变量作为函数参数 164
7.3 指针与一维数组 167
7.3.1 一维数组的指针表示 167
7.3.2 数组作函数参数时的指针表示 169
7.3.3 字符串的指针表示 171
7.4 指针与多维数组 174
7.4.1 多维数组的处理 174
7.4.2 指向多维数组的指针 175
7.5 指针数组和多级指针 177
7.5.1 指针数组的概念 177
7.5.2 指针数组的应用 178
7.5.3 多级指针(指向指针的指针) 181
7.6 指针与函数 182
7.6.1 指向函数的指针 183
7.6.2 函数指针的应用 184
7.6.3 返回指针的函数 187
7.7 命令行参数 190
小结 191
习题 193
第8章 结构体与联合体 195
8.1 结构体 195
8.1.1 结构体类型的定义 195
8.1.2 结构体类型变量的定义与使用 196
8.1.3 结构体类型变量的赋值与初始化 197
8.1.4 结构体类型数组的定义与引用 198
8.1.5 结构体类型指针的定义和引用 201
8.1.6 结构体类型数据的动态存储分配 204
8.1.7 链表及其基本操作 206
8.2 联合体 211
8.3 其他自定义数据类型 213
8.3.1 枚举类型 213
8.3.2 类型定义符typedef 215
小结 217
习题 217
第9章 预处理和输入/输出标准函数 219
9.1 预处理命令 219
9.1.1 宏定义 219
9.1.2 文件包含 222
9.1.3 条件编译 222
9.2 输入/输出标准函数 224
9.2.1 格式输出函数(printf) 225
9.2.2 格式输入函数(scanf) 227
9.3 自定义头文件设计的原则 229
小结 232
习题 232
第10章 文件 234
10.1 文件的基本概念 234
10.2 文件的基本操作 235
10.2.1 文件的打开与关闭 235
10.2.2 文件的读写 237
10.2.3 文件检测函数 246
10.3 程序设计举例 246
小结 249
习题 249
第11章 数据结构和数据抽象 251
11.1 数据抽象 251
11.1.1 数据结构和数据类型 251
11.1.2 抽象数据类型 252
11.2 线性表 252
11.2.1 线性表的定义 252
11.2.2 线性表的基本操作 253
11.2.3 线性表的顺序存储 254
11.2.4 顺序表上基本运算的实现 255
11.3 堆栈 256
11.3.1 抽象栈的定义及基本操作 257
11.3.2 抽象栈的定义 257
11.3.3 顺序栈的基本运算的实现 257
11.4 队列 259
11.4.1 队列的定义 259
11.4.2 队列的存储结构及其相关算法 259
小结 262
习题 263
附录1 ASCII代码对照表 264
附录2 C库函数 265
附录3 Debugger调试器使用简介 271