标题：C语言标准教程
图书简介
作者：王浩 等编著  丛书名：C语言标准教程 
出版日期：2011年1月 书号：978-7-122-09837-5 
开本：16 
装帧：平 
版次：1版1次 
页数：364页
内容简介
C语言是基础的通用程序设计语言，许多语言都是从C语言基础上发展起来的，所以掌握C语言是软件设计的基础。 
本书本着零基础学习C语言的精神，分4篇介绍了C语言和程序设计的相关知识。第1篇是前置知识，介绍程序设计概念及C语言的历史和发展，让读者建立起程序设计的思想。第2篇是基础知识，详细介绍C语言的语法规则和如何利用C语言进行程序设计的方法。第3篇是能力提高，通过大量实例将函数、数组、指针、结构体、文件操作等知识介绍给读者。第4篇是高级实践，通过对数据结构、算法的介绍和一个项目案例，详细介绍了C语言中的开发技巧和项目开发过程，提高读者的编程水平。 
本书配合了大量的图例及代码说明，随书光盘中包含配套的视频讲解，适合希望掌握有关C语言程序开发相关技术的读者阅读。
前 言
很多读者朋友认为，C语言是一门过期的程序语言，因为其不支持类、面向对象等编程方法。其实不然，C语言仍然是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。对操作系统、应用程序以及需要对硬件进行操作的场合，用C语言明显优于其他高级语言。正因为其具有强大的功能，许多著名的系统软件，如DBASE Ⅲ PLUS、DBASE Ⅳ都是由C语言编写的。用C语言加上一些汇编语言子程序，就更能显示C语言的优势了，像PC-DOS、WORDSTAR等就是用这种方法编写的。 
对于一些初学者而言，应记住学习C语言程序设计的过程是交互式的。不实际编写程序就无法学会C。因此，本书给出了许多实际操作，以帮助读者更好、更快地掌握C语言。 
本书特点 
本书全面讲解了C语言各方面的知识，包括基本控制语句、变量、函数、指针、数组、结构体及算法等，由浅入深、从易到难，是一本学习C语言的不可多得的好书。 
本书的主要特点如下。 
1．零基础开始学习 
本书尽可能少地限定读者需要知道的基础编程知识，使读者能够做到从零基础开始学习。 
2．全面而深入的内容 
本书在介绍各种基础知识时，采用了浅显易懂的例子，使用了大量代码示例和图解，方便读者自己进行实践和演练，读者可对其直接使用，或者根据自己的实际情况进行调整。本书的所有例子、源代码工程都附在随书光盘中，方便读者使用。 
3．较高的实用价值 
本书给出了大量的经典实例，这些实例都可以在C语言编译器上调试成功；并且给出了代码的详细注释与分析，读者只需对某些代码稍加修改，便可以应用于实际开发中。 
4．清晰透彻的讲解 
本书主要读者对象为初、中级程序开发人员，在知识点的讲解过程中尽量做到通俗易懂，简洁明了。在保证阐述严谨的同时，力求做到容易理解，不钻牛角尖，不使用过于专业的、晦涩艰深的术语，不使用有歧义的表达方式，使读者在阅读时迅速掌握关键知识点。 
5．注重技巧和实际 
本书结合笔者多年的C语言程序项目开发经验，在每个重要的知识点上都给出了一些编程技巧，从而帮助读者快速积累编程经验。 
本书内容 
本书共分为4篇17章，主要内容如下。 
第1篇（第1章）前置知识 
对程序和程序设计相关的知识做了概念性的描述，且介绍了程序生成的工具；同时对于C语言的发展、特点、构成及开发过程进行了详细的描述；最后用一个示例来分析和说明C语言程序，完成整个前置知识的统一。 
第2篇（第2章～第5章）基础知识 
对C语言中所有的基础知识进行介绍，包括标识符、变量、常量、基本数据类型以及运算符、表达式等基本概念，同时通过实例介绍如何用C语言实现程序设计中的3种基本结构。 
第3篇（第6章～第15章）能力提高篇 
采用图片、表格和实例讲解等方法，系统地介绍C语言中函数、数组、字符串处理函数、指针、结构体、共用体、引用、程序的预处理、编程规范、内存管理、文件操作及C语言中库函数的使用，让读者熟悉并掌握好C语言程序设计的细支末节。 
第4篇（第16章～第17章）高级实战篇 
详细介绍数据结构及常用算法，并加入了一个学生管理系统的项目开发实例，通过文档和代码的介绍，让读者体会到真实的项目开发过程。 
本书由浅入深，由理论到实践，尤其适合初级读者逐步学习和完善自己的知识结构。 
本书读者 
没有基础，希望学习程序设计的新手。 
想学习C语言编程知识的各大院校计算机专业和非计算机专业的学生。 
具备一定的编程理论知识但是缺乏实践操作的初级程序人员。 
从其他语言转向学习C语言程序设计的中级编程人员。 
本书编者 
本书由王浩主笔编写。其他参与编写的人员有刘成、马臣云、潘娜、阮履学、陶则熙、王大强、王磊、徐琦、许少峰、颜盟盟、杨娟、杨瑞萍、于海波、俞菲、曾苗苗、赵莹、朱存等。由于编者水平有限，书中难免有不足和疏忽之处，恳请广大读者批评指正。 
目 录
第1篇 前置知识 
第1章 C语言初步认识 2 
1.1 了解程序及其设计 2 
1.1.1 程序是什么 2 
1.1.2 程序设计与程序设计语言 3 
1.2 结构化程序设计 3 
1.3 C语言的初步知识 4 
1.3.1 C语言的历史 4 
1.3.2 C语言程序的特点 5 
1.3.3 C语言程序的构成 6 
1.3.4 C语言程序的开发过程 7 
1.4 程序生成的工具 7 
1.4.1 编译器的概念 8 
1.4.2 连接器的概念 8 
1.5 一个简单的C语言程序 8 
1.5.1 学习写第一个C语言程序 9 
1.5.2 分析C语言程序的组成部分 9 
1.5.3 运行这个程序 10 
1.5.4 牛刀小试 10 
1.6 本章小结 11 
第2篇 基础知识 
第2章 C语言基础 14 
2.1 了解电脑内存的运行方式 14 
2.2 认识和使用标识符 15 
2.2.1 标识符的命名规则 15 
2.2.2 标识符的分类 16 
2.3 什么是变量 17 
2.3.1 了解变量 17 
2.3.2 声明变量 17 
2.3.3 初始化变量 18 
2.4 什么是常量 19 
2.4.1 认识常量 19 
2.4.2 整型常量 19 
2.4.3 浮点型常量 20 
2.4.4 字符常量 21 
2.4.5 字符串常量 21 
2.4.6 符号常量 22 
2.5 数据存储的基本类型 23 
2.5.1 存储整型数据 23 
2.5.2 存储实型数据 26 
2.5.3 存储字符型数据 27 
2.6 运算符和表达式 30 
2.6.1 在C语句中使用算术运算符 30 
2.6.2 赋值运算符 32 
2.6.3 自增、自减运算符 34 
2.6.4 逗号运算符 35 
2.6.5 sizeof运算符 36 
2.6.6 关系运算符 37 
2.6.7 运算符的优先级和括号 39 
2.7 数据类型的转换 41 
2.7.1 隐式自动转换 41 
2.7.2 显式强制转换 45 
2.8 本章小结 45 
2.9 本章习题 46 
第3章 使用顺序结构设计C语言程序 47 
3.1 语句与表达式 47 
3.1.1 表达式语句与空语句 47 
3.1.2 复合语句 48 
3.2 控制屏幕打印 48 
3.2.1 putchar()函数 48 
3.2.2 printf()函数 49 
3.2.3 标准错误流 51 
3.3 读取键盘输入 51 
3.3.1 getchar()函数 51 
3.3.2 getch()函数和getche()函数 52 
3.3.3 scanf()函数 53 
3.4 综合示例 56 
3.5 本章小结 57 
3.6 本章习题 57 
第4章 使用选择结构设计C语言程序 59 
4.1 用逻辑运算符实现选择结构 59 
4.1.1 逻辑运算符的使用 59 
4.1.2 逻辑运算符的优先级与结合性 60 
4.1.3 使用逻辑运算符的程序示例 61 
4.2 用if语句实现选择结构 62 
4.2.1 if语句的使用方法 62 
4.2.2 使用if语句的程序示例 63 
4.2.3 使用if…else结构实现多项选择 63 
4.2.4 使用if…else结构的程序示例 64 
4.2.5 if语句的嵌套使用 66 
4.2.6 使用if语句嵌套的程序示例 69 
4.3 用条件运算符实现简单的选择结构 72 
4.4 用多分支条件选择语句switch实现选择结构 73 
4.4.1 switch语句的结构 74 
4.4.2 break语句在switch语句中的使用 74 
4.4.3 多个执行结果共用一个条件 77 
4.4.4 使用switch语句的程序示例 78 
4.5 本章小结 79 
4.6 本章习题 79 
第5章 使用循环结构设计C语言程序 81 
5.1 while循环语句 81 
5.1.1 while循环语句的结构和功能 81 
5.1.2 while循环语句的程序示例 82 
5.2 do-while循环语句 84 
5.2.1 比较do-while循环语句与while循环语句的差异 84 
5.2.2 do-while循环语句的程序示例 85 
5.3 for循环语句 86 
5.3.1 for循环语句的结构和功能 86 
5.3.2 for循环语句的程序示例 87 
5.3.3 for循环语句的几种不同格式 88 
5.3.4 在for循环语句中添加逗号运算符 90 
5.4 高级流程控制语句 91 
5.4.1 用goto语句在程序中任意跳转 92 
5.4.2 用break语句中断循环 93 
5.4.3 用continue语句跳出当前循环 94 
5.5 各种循环语句的嵌套使用 96 
5.6 本章小结 99 
5.7 本章习题 99 
第3篇 能力提高篇 
第6章 用函数把程序分块 102 
6.1 函数的概念 102 
6.1.1 什么是函数 102 
6.1.2 函数的优点 102 
6.1.3 main函数的概念及用途 103 
6.2 函数的定义 103 
6.2.1 定义一个无参函数 103 
6.2.2 定义一个有参函数 105 
6.2.3 函数的参数 106 
6.2.4 函数的返回值 107 
6.2.5 空函数 109 
6.3 函数的调用原理和声明 109 
6.3.1 函数的声明 109 
6.3.2 函数调用表达式 111 
6.3.3 函数调用的方式 111 
6.3.4 嵌套调用 112 
6.4 递归函数 113 
6.5 变量的作用域和存储类别 117 
6.5.1 什么是变量的作用域 117 
6.5.2 块结构 117 
6.5.3 局部变量和局部变量的作用域 118 
6.5.4 全局变量和全局变量的作用域 118 
6.5.5 变量的存储类别 119 
6.5.6 静态型变量存储 120 
6.5.7 自动型变量存储 122 
6.6 内部函数与外部函数 123 
6.6.1 内部函数 124 
6.6.2 外部函数 125 
6.7 本章小结 127 
6.8 本章习题 127 
第7章 数组 129 
7.1 数组的概念及内存占用 129 
7.1.1 数组的概念 129 
7.1.2 数组在内存中的存储 129 
7.2 一维数组 130 
7.2.1 一维数组的定义 131 
7.2.2 一维数组的初始化 131 
7.2.3 一维数组元素的引用 132 
7.2.4 一维数组的应用 133 
7.3 二维数组 134 
7.3.1 二维数组的定义 134 
7.3.2 二维数组的初始化 136 
7.3.3 二维数组元素的引用 137 
7.3.4 二维数组的应用 137 
7.4 字符数组 139 
7.4.1 字符数组的定义 139 
7.4.2 字符串与字符数组 139 
7.4.3 字符数组的初始化 139 
7.4.4 字符数组的输入和输出 140 
7.4.5 使用scanf()函数接收字符串 141 
7.4.6 字符数组的应用 142 
7.5 字符数组元素作为函数参数 143 
7.6 综合示例 144 
7.7 本章小结 147 
7.8 本章习题 147 
第8章 字符串 149 
8.1 字符串的长度 149 
8.2 字符串拷贝函数 150 
8.2.1 strcpy()函数 150 
8.2.2 strncpy()函数 151 
8.3 字符串连接函数 152 
8.3.1 strcat()函数 152 
8.3.2 strncat()函数 152 
8.4 字符串比较函数 153 
8.4.1 Strcmp()函数两个完整的字符串之间的比较 153 
8.4.2 Strncmp()函数 154 
8.4.3 Strcmpi()函数 155 
8.5 字符串查找函数 157 
8.5.1 strchr()函数 157 
8.5.2 strrchr()函数 158 
8.5.3 strcspn()函数 158 
8.5.4 strspn()函数 158 
8.5.5 strpbrk()函数 159 
8.5.6 strstr()函数 160 
8.6 其他的字符串处理函数 161 
8.6.1 strrev()函数 162 
8.6.2 strset()函数和strnset()函数 162 
8.7 字符检查函数 163 
8.7.1 isdigit()函数 163 
8.7.2 isalpha()函数 164 
8.7.3 检查函数的使用 164 
8.8 将字符串转换成数字 165 
8.9 本章小结 166 
8.10 本章习题 166 
第9章 指针 167 
9.1 指针与地址 167 
9.1.1 变量的地址 167 
9.1.2 指针概述 168 
9.2 存放地址的指针变量 168 
9.2.1 定义指针变量 169 
9.2.2 用变量的地址初始化指针 170 
9.2.3 置“空”指针变量 171 
9.2.4 指针变量的引用 171 
9.3 指针变量进行算数运算 172 
9.3.1 指针变量的加减运算 172 
9.3.2 指针变量的关系运算 175 
9.4 指针与函数 175 
9.4.1 指针作为参数 175 
9.4.2 指针作为返回值 178 
9.4.3 函数指针 179 
9.5 数组与指针 181 
9.5.1 指针数组的定义和引用 181 
9.5.2 一维数组中元素的指针表示法 182 
9.5.3 二维数组中元素的指针表示法 183 
9.5.4 指针与字符串结合使用 184 
9.5.5 命令行参数 186 
9.6 指向指针的指针变量 188 
9.7 本章小结 189 
9.8 本章习题 189 
第10章 结构体、共同体与枚举型 191 
10.1 结构体的定义与引用 191 
10.1.1 结构体类型的定义 191 
10.1.2 结构体类型变量的定义 193 
10.1.3 结构体类型变量的初始化 195 
10.1.4 结构体类型变量的引用 196 
10.1.5 结构体类型的指针 197 
10.1.6 结构体数组 199 
10.1.7 在结构体中包含其他结构 202 
10.1.8 结构体与函数的关系 205 
10.2 共用体的定义与引用 207 
10.2.1 共用体类型的定义 207 
10.2.2 共用体类型变量的定义 208 
10.2.3 共用体类型变量的引用 209 
10.2.4 共用体类型数据的特点 211 
10.3 用typedef定义一个引用变量 211 
10.4 枚举型数据类型 212 
10.4.1 枚举型的定义 212 
10.4.2 枚举变量的定义与赋值 213 
10.5 综合示例 215 
10.6 本章小结 217 
10.7 本章习题 217 
第11章 预处理命令 219 
11.1 认识预处理命令 219 
11.2 包含其他文件的命令 219 
11.3 宏定义 222 
11.3.1 不带参数的宏 222 
11.3.2 带参数的宏 223 
11.3.3 宏的取消 225 
11.3.4 使用宏定义的优缺点 226 
11.4 条件编译 228 
11.5 头文件的编写 230 
11.6 本章小结 231 
11.7 本章习题 232 
第12章 C语言的编程规范 233 
12.1 命名规范 233 
12.2 格式规范 235 
12.3 函数规范 236 
12.4 其他规范 238 
第13章 使用代码管理计算机内存 239 
13.1 分配内存的存储空间 239 
13.1.1 malloc()函数 239 
13.1.2 calloc()函数 241 
13.1.3 realloc()函数 243 
13.1.4 malloc()函数和calloc()函数的区别 244 
13.1.5 free()函数 245 
13.2 将数据按位运算 246 
13.2.1 位运算符 246 
13.2.2 将数据进行移位运算 247 
13.2.3 将数据进行按位逻辑运算 249 
13.3 本章小结 256 
13.4 本章习题 256 
第14章 文件操作 258 
14.1 打开、关闭和检测文件 258 
14.1.1 打开文件 258 
14.1.2 文件检查函数 262 
14.1.3 读写文件数据 262 
14.1.4 关闭文件 274 
14.2 文件定位函数 274 
14.2.1 fseek()函数 274 
14.2.2 ftell()函数 277 
14.2.3 rewind()函数 278 
14.3 文件管理函数的应用 280 
14.3.1 删除文件 280 
14.3.2 重命名文件 281 
14.4 使用临时文件 282 
14.5 非缓冲文件系统 284 
14.5.1 open()函数 284 
14.5.2 close()函数 284 
14.5.3 create()函数 284 
14.5.4 read()函数 285 
14.5.5 write()函数 285 
14.5.6 lseek()函数 285 
14.6 本章小结 286 
14.7 本章习题 287 
第15章 C语言中的库函数 288 
15.1 处理数学问题的函数 288 
15.1.1 三角函数 288 
15.1.2 指数函数和对数函数 291 
15.1.3 双曲线函数 292 
15.1.4 其他数学函数 293 
15.2 处理时间的函数 295 
15.2.1 C语言程序中时间的表示 295 
15.2.2 使用时间函数 295 
15.3 查找和排序函数 304 
15.3.1 bsearch()函数 304 
15.3.2 qsort()函数 305 
15.3.3 程序示例 305 
15.4 随机数生成函数 309 
15.4.1 随机数产生的过程 309 
15.4.2 随机数相关的函数 309 
15.5 本章小结 312 
15.6 本章习题 313 
第4篇 高级实战篇 
第16章 简单的数据结构介绍 316 
16.1 单链表 316 
16.1.1 单链表的概念 316 
16.1.2 单链表的创建 317 
16.1.3 单链表的使用 320 
16.2 栈 326 
16.2.1 栈的概念 326 
16.2.2 栈的基本运算 326 
16.2.3 链栈 327 
16.3 队列 329 
16.3.1 队列的概念 329 
16.3.2 队列的基本运算 330 
16.3.3 链队列 330 
16.4 快速排序函数 333 
16.5 本章小结 335 
16.6 本章习题 335 
第17章 学生管理系统的开发 336 
17.1 学生管理系统需求分析 336 
17.2 学生管理系统界面设计 337 
17.3 学生管理系统功能设计 338 
17.3.1 学生管理系统概要设计 339 
17.3.2 用户登录管理模块的设计 341 
17.3.3 文件读写模块的设计 342 
17.3.4 学生信息显示模块的设计 345 
17.3.5 学生人员增加模块的设计 345 
17.3.6 学生人员删除模块的设计 346 
17.3.7 学生信息修改模块的设计 348 
17.3.8 学生信息查询模块的设计 350 
17.3.9 主菜单模块的设计 350 
17.3.10 主函数及错误处理模块的设计 352 
17.3.11 结构体及宏定义 354 
17.4 学生管理系统测试用例编写 355 
17.5 学生管理系统整合测试 360 
17.5.1 主菜单和界面显示功能测试的演示 360 
17.5.2 用户登录功能测试的演示 361 
17.5.3 用户修改密码功能测试的演示 361 
17.5.4 学生人员增加功能测试的演示 362 
17.5.5 学生人员删除功能测试的演示 362 
17.5.6 学生信息查询功能测试的演示 363 
17.5.7 学生信息修改功能测试的演示 363 
17.5.8 文件读写功能测试的演示 363 
17.6 本章小结 364