标题：C语言程序设计能力教程（第二版）
基本信息
书名：C语言程序设计能力教程（第二版）
套系名称：国家社会科学基金（教育学科）“十一五”规划课题研究成果——全国高等职业院校计算机教育规划教材
出版社：中国铁道出版社
书号：978-7-113-10766-6
开本：16开　
页码：352页
作者：赵凤芝
出版时间：2010-03-01 
定价：33 元
内容简介
本书以突出实践应用能力为出发点，采用流行的“案例与任务驱动、项目实训与应用”的模式，从大量实例入手，由浅入深地对C语言程序设计内容进行了全面讲述。全书共分11章，分别介绍了C语言程序的概述、编制C程序的基础知识、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组应用、函数应用、指针、结构体（链表）、共同体和枚举类型、文件及几个典型应用实例和综合测试题等。
本书是由具有多年C语言程序设计教学经验的一线教师和专家根据实践教学和应用研究体会编写而成的。内容通俗易懂，实例非常丰富、典型而全面，目标明确，实用性强，理论适度，深入浅出，注重理论与实践结合，形式新颖，使读者通过实例能够轻松愉快地全面掌握C语言程序设计的方法和应用。
本书既适合作为大中专院校程序设计课程的教材，也适合参加培训、考级、考试的人员及广大计算机爱好者作为自学和参考用书。[1]
图书目录
第1章 进入C语言程序世界 1
1.1 了解C语言程序的结构 1 
1.1.1 C语言程序的结构分析 1 
1.1.2 C语言程序的结构特点 3 
1.1.3 C语言程序的书写格式 3 
1.2 设计简单的C语言程序 4 
1.2.1 编程示例 4 
1.2.2 算法及算法的表示 6 
1.3 C程序的调试与运行 9 
1.3.1 C语言程序的实现过程 9 
1.3.2 在Turbo C编译系统环境中实现C程序 10 
1.3.3 在Visual C++环境中实现C程序 11 
1.4 计算机语言的发展过程 18 
1.4.1 第一代语言——机器语言（低级语言） 18 
1.4.2 第二代语言——汇编语言（低级语言） 19 
1.4.3 第三代语言——算法语言（高级语言） 20 
1.4.4 第四代语言——非过程化语言 21 
技能训练 22 
小结 22 
习题 23 
项目实训 23 
第2章 编制C程序的基础知识 25 
2.1 常量与变量 25 
2.2 C语言的基本数据类型 26 
2.2.1 整型数据 27 
2.2.2 实型数据 29 
2.2.3 字符型数据 31 
2.3 C语言的常用运算符和表达式 35 
2.3.1 算术运算符及其表达式 35 
2.3.2 赋值运算符及其表达式 36 
2.3.3 自增和自减运算符和强制类型运算符 38 
2.3.4 关系运算符及其表达式 39 
2.3.5 逻辑运算符及其表达式 40 
2.3.6 逗号运算符及其表达式 41 
2.3.7 各种类型数据之间的转换 42 
2.3.8 应用实例 43 
技能训练 45 
小结 45 
习题 45 
项目实训 47 
第3章 顺序结构程序设计 49 
3.1 结构化程序设计的三种基本结构 49 
3.2 数据的输入与输出 52 
3.2.1 格式输出函数printf() 52 
3.2.2 格式输入函数scanf() 55 
3.2.3 单个字符输入/输出函数（getchar()/putchar()） 57 
3.3 顺序结构程序设计举例 58 
技能训练一 60 
技能训练二 60 
小结 61 
习题 61 
项目实训 63 
第4章 选择结构程序设计 65 
4.1 选择结构程序设计简介 65 
4.2 if语句的典型应用形式 66 
4.2.1 简单if形式 67 
4.2.2 标准形式if…else 67 
4.2.3 嵌套if语句形式 69 
4.2.4 多分支if…else if语句形式 71 
4.3 条件运算符和条件表达式 73 
4.4 switch语句的应用——评定学生成绩 73 
4.5 选择结构程序设计应用 76 
4.5.1 计算银行存款利息 76 
4.5.2 依据体重判断健康状况 77 
4.5.3 设计简易计算器 78 
技能训练 79 
小结 80 
习题 81 
项目实训 83 
第5章 循环结构程序设计 85 
5.1 为什么使用循环 85 
5.2 while语句与do…while语句 86 
5.2.1 while语句（当型循环） 86 
技能训练一 88
能力拓展 89 
5.2.2 do...while语句（直到型循环） 89 
5.3 for语句实现循环 90 
技能训练二 91
技能训练三 92 
5.4 几种循环的比较 93 
5.5 多重循环（嵌套循环） 94 
能力拓展 96 
编程技巧总结 96 
5.6 break和continue语句 97 
5.6.1 break语句 97 
5.6.2 continue语句 99 
5.7 循环结构程序设计举例 100 
5.7.1 找最大值及求和 100 
5.7.2 求素数 103 
5.7.3 求阶乘的和 104 
能力拓展 105 
综合技能训练 106 
综合技能训练一：穷举类型的程序设计 106 
综合技能训练二：递推类型的程序设计 111 
小结 113 
习题 113 
项目实训 115 
第6章 应用数组设计程序 117 
6.1 数组的引入 117 
6.2 一维数组 119 
6.2.1 一维数组的定义（先定义后使用） 119 
6.2.2 一维数组的初始化 120 
6.2.3 一维数组的引用 120 
6.3 二维数组 122 
6.3.1 二维数组的定义 122 
6.3.2 二维数组的初始化 123 
6.3.3 二维数组元素的引用 123 
6.3.4 多维数组 126 
6.4 字符数组 126 
6.4.1 字符数组的定义 126 
6.4.2 字符数组的初始化 127 
6.4.3 字符数组的输入与输出 128 
6.4.4 字符串（字符数组）处理函数 128 
6.5 数组的应用 131 
6.5.1 利用数组求Fibonacci数列的前n项 131 
6.5.2 利用数组实现数据排序 132 
6.5.3 利用数组处理批量数据 135 
6.5.4 利用数组实现矩阵的转置 136 
6.5.4 字符数组的应用 137 
技能训练一 142 
技能训练二 144 
小结 144 
习题 145 
项目实训 146 
第7章 应用函数设计程序 148 
7.1 函数的引入 148 
7.2 函数的定义与调用 149 
7.2.1 函数定义的一般形式 150 
7.2.2 函数的参数和返回值 150 
7.2.3 函数调用的一般方法 152 
7.2.4 函数的声明 153 
7.3 函数的嵌套调用和递归调用 154 
7.3.1 函数嵌套调用——求最大公约数和最小公倍数 154 
7.3.2 函数的递归调用 155 
7.4 函数应用实例 157 
7.4.1 利用函数完成特定功能求值 157 
7.4.2 利用函数求阶乘的和 158 
技能训练 158 
7.4.3 利用数组作为函数参数 159 
能力拓展 161
7.4.4 利用函数解决Hanoi（汉诺塔）问题 162 
7.5 局部变量、全局变量及其存储 163 
7.5.1 变量的作用域 163 
7.5.2 变量的存储类别（生存期、生命期） 165 
7.6 内部函数和外部函数 167 
技能训练一：函数的定义 168 
技能训练二：函数的调用与参数传递 169
技能训练三：函数的嵌套调用 171 
技能训练四：函数的递归调用 173 
小结 174 
习题 174 
项目实训 177 
第8章 应用指针编制程序 179 
8.1 指针概述 179 
8.1.1 内存地址与指针 179 
8.1.2 变量的直接访问与间接访问 180 
8.2 指针变量 180 
8.2.1 指针变量的定义及初始化 182 
8.2.2 指针变量的引用 183 
8.2.3 指针变量的运算 185 
8.2.4 指针变量作函数的参数 186 
8.3 指针与数组 190 
8.3.1 用指向一维数组的指针变量处理数组元素 190 
8.3.2 指针与二维数组 193 
8.3.3 指向数组指针作函数的参数 194 
8.3.4 字符指针与字符串 195 
技能训练一 197 
8.4 指针与函数 198 
8.4.1 函数型指针的定义 198 
8.4.2 函数型指针的赋值 199 
8.4.3 指针型函数的定义与使用 199 
8.5 指针数组 201 
8.5.1 指针数组的定义 201 
8.5.2 指针数组的初始化 201 
8.6 指向指针的指针 202 
能力拓展一 204 
技能训练一：指针变量的定义与引用 205 
技能训练二：指针对字符数组操作 206 
能力拓展二：返回指针值的函数 207 
小结 209 
习题 210 
项目实训 212 
第 9章 结构体、共同体和枚举类型的应用 213 
9.1 结构体类型与结构体变量的定义 213 
9.1.1 结构体类型的定义 214 
9.1.2 结构体类型变量的定义 215 
9.2 结构体变量的引用 217 
9.2.1 结构体类型成员的引用 217 
9.2.2 结构体类型变量的赋值 217 
9.2.3 结构体类型变量的存储 218 
9.3 结构体数组 218 
9.3.1 结构体类型数组的定义、赋值与引用 218 
9.3.2 结构体类型数组的应用 220 
9.4 结构体与指针 222 
9.4.1 指向结构体变量的指针 222 
9.4.2 指向结构体数组的指针 223 
9.5 结构体与函数 224 
9.6 结构体应用——链表 227 
9.6.1 动态链表基本概念 228 
9.6.2 建立链表 229 
9.6.3 结点查找 230 
9.6.4 结点插入 231 
9.6.5 结点删除 233 
9.7 共同体 234 
9.7.1 共同体类型定义 235 
9.7.2 共同体类型变量 235 
9.7.3 共同体类型成员引用 236 
9.7.4 共同体类型特点 236 
9.7.5 共同体类型应用举例 236 
9.8 枚举类型 237 
9.9 用typedef定义类型 238 
9.9.1 定义已有类型的别名 238 
9.9.2 定义构造类型别名 239 
9.9.3 typedef的应用 239 
技能训练一：结构体类型及变量的应用 240 
技能训练二：结构体数组的应用 241 
技能训练三：结构体指针 242 
能力拓展：结构体应用——链表综合实例 242 
小结 247 
习题 247 
项目实训 248 
第10章 文件 250 
10.1 文件概述 250 
10.1.1 文件的概念 250 
10.1.2 文件的指针 252 
10.1.3 文件的一般操作过程 252 
10.2 文件的常用操作 253 
10.2.1 文件的打开/关闭函数 253 
10.2.2 文件的基本读/写函数 254 
10.2.3 文件的格式化读/写函数 255 
10.2.4 文件的数据块读/写函数 255 
10.2.5 文件的字符串读/写函数 257 
10.2.6 文件的整型数据读/写函数 258 
10.2.7 文件定位函数 258 
10.2.8 文件的检错与处理函数 259 
10.2.9 DOS文件调用与删除函数 260 
10.3 文件的应用举例 260 
技能训练一：缓冲型文件类型指针及文件打开与关闭 263 
技能训练二：缓冲型文件的读/写 263
技能训练三：缓冲型文件的定位 264 
小结 265 
习题 265 
项目实训 268
第11章 C语言程序设计应用实例 270
11.1 实现通讯录的管理程序 270 
11.1.1 实例说明 270 
11.1.2 实例解析 270 
11.1.3 通讯录的管理程序 271 
11.2 学生成绩管理程序 277 
11.2.1 实例说明 277 
11.2.2 实例解析 277 
11.2.3 学生成绩管理程序 277 
11.3 图形与游戏编程实例 285 
11.3.1 Turbo C 2.0的图形处理系统 285 
11.3.2 Turbo C 2.0图形库函数简介 285 
11.3.3 游戏编程——贪吃蛇游戏 289
技能训练：编写黑白棋对弈游戏 294 
小结 303 
习题 304 
项目实训 304
综合测试题 305
试卷一 305
试卷二 309 
附录 A 常用字符与ASCII代码对照表 314 
附录 B C语言的关键字 315 
附录 C 运算符的优先级和结合性 316 
附录 D 编译预处理命令 318 
附录 E 位运算 323 
附录 F C语言常见库函数 326 
参考文献 333