目录 上篇程序与结构1 第1章绪论3 1.1计算机的发展史3 1.2计算机的基本结构5 1.2.1计算机硬件6 1.2.2计算机软件9 1.2.3按层次的观点看到的计算机10 1.3程序及编程语言11 1.3.1程序11 1.3.2编程语言11 1.3.3程序是怎样运行的12 1.4算法13 1.4.1什么是算法13 1.4.2描述算法的方法14 1.5软件开发流程17 1.6创建C程序20 1.6.1编辑20 1.6.2编译21 1.6.3链接21 1.6.4执行21 1.7案例研究21 1.8本章小结22 1.9习题23 第2章编程初步24 2.1C语言的发展24 2.2C程序的基本结构26 2.2.1第一个C程序26 2.2.2第二个C程序29 2.2.3C程序结构的特点32 2.3编程风格32 2.3.1源程序文档化32 2.3.2数据声明原则33 2.3.3语句构造原则34 2.3.4输入与输出原则34 2.3.5追求效率原则34 2.4用计算机解题的方法35 2.4.1分析问题35 2.4.2算法设计36 2.4.3编程实现36 2.4.4测试及调试36 2.5案例研究37 2.6本章小结40 2.7习题40 程序设计基础目录 第3章简单的C程序41 3.1标识符41 3.2变量42 3.3数据类型44 3.3.1整型44 3.3.2浮点型48 3.3.3字符型49 3.4运算符52 3.4.1算术运算符54 3.4.2赋值运算符55 3.4.3强制类型转换57 3.4.4关系运算符57 3.4.5逻辑运算符59 3.4.6自增/自减运算符61 3.4.7逗号运算符63 3.5符号常量64 3.6标准输入输出65 3.6.1格式化输出65 3.6.2格式化输入68 3.7案例研究72 3.8本章小结74 3.9习题75 第4章顺序结构76 4.1结构化程序设计76 4.2顺序结构77 4.3案例研究78 4.4本章小结80 4.5习题81 第5章选择结构82 5.1选择的过程82 5.2ifelse控制结构83 5.2.1if语句的两种形式83 5.2.2if语句嵌套87 5.3switch89 5.4案例研究92 5.5本章小结94 5.6习题94 第6章循环结构96 6.1循环结构简介96 6.2循环控制语句97 6.2.1while语句97 6.2.2for语句100 6.2.3dowhile语句102 6.2.4三种循环控制语句的比较104 6.2.5再论for语句104 6.3break和continue语句105 6.4案例研究107 6.5本章小结113 6.6习题114 第7章函数116 7.1模块化程序设计116 7.2C语言的函数118 7.2.1函数的概念118 7.2.2函数的分类118 7.3函数的定义119 7.3.1无参函数的定义119 7.3.2有参函数的定义120 7.4函数的调用121 7.4.1函数调用的一般形式121 7.4.2函数嵌套调用及分析123 7.5形参与实参的关系125 7.5.1函数为什么有参数125 7.5.2值传递机制126 7.6函数的返回值129 7.7局部变量与全局变量130 7.7.1局部变量130 7.7.2黑盒的观点132 7.7.3全局变量133 7.8变量的存储类型135 7.9函数原型140 7.10案例研究142 7.11本章小结145 7.12习题145 中篇程序与数据147 第8章数组149 8.1什么是数组149 8.2一维数组151 8.2.1一维数组的定义151 8.2.2一维数组元素的引用152 8.2.3一维数组的存储153 8.2.4一维数组的初始化155 8.3多维数组156 8.3.1双下标变量156 8.3.2二维数组的定义157 8.3.3二维数组元素的引用158 8.2.4二维数组的存储159 8.2.5二维数组的初始化161 8.4案例研究162 8.5本章小结172 8.6习题172 第9章字符串175 9.1什么是字符串175 9.2字符串的存储176 9.2.1一维字符数组的定义和初始化176 9.2.2二维字符数组的定义和初始化178 9.2.3字符数组的引用178 9.3字符串处理函数182 9.4案例研究187 9.5本章小结196 9.6习题197 第10章指针199 10.1为什么使用指针199 10.2什么是指针201 10.3指针变量的定义和引用202 10.3.1指针变量的定义202 10.3.2指针变量的引用202 10.3.3间接运算符()203 10.3.4指针变量的更多运算方法208 10.4指针与一维数组210 10.4.1定义访问一维数组的指针210 10.4.2用指针引用一维数组元素211 10.5指针与字符串214 10.6内存的使用216 10.6.1动态内存分配: malloc()函数217 10.6.2释放动态分配的内存218 10.7指针函数219 10.8案例研究220 10.9本章小结234 10.10习题235 第11章指针进阶236 11.1指针与多维数组236 11.2指针数组240 11.2.1指针数组的定义及操作240 11.2.2在受限的内存中运行程序242 11.3指向指针的指针243 11.4函数指针245 11.5案例研究247 11.6本章小结257 11.7习题258 第12章结构类型260 12.1什么是结构类型260 12.2定义结构类型261 12.3结构变量的定义和初始化263 12.4结构变量的引用方法265 12.5使用typedef为已有类型定义别名268 12.6结构数组269 12.7结构指针272 12.8结构数组与指针274 12.9案例研究276 12.10本章小结281 12.11习题281 下篇应用及相关主题283 第13章数据的组织及应用285 13.1顺序表285 13.1.1顺序表的操作案例285 13.1.2顺序表的特点295 13.2链表295 13.2.1单链表295 13.2.2单链表的操作案例297 13.2.3链表的存储特点310 13.3贪心算法310 13.4递归算法314 13.5回溯算法317 13.6本章小结322 13.7习题323 第14章相关主题324 14.1文件324 14.1.1什么是文件325 14.1.2文件流326 14.1.3文件指针326 14.1.4文件的基本操作327 14.1.5文件小结341 14.2编译预处理341 14.2.1宏定义341 14.2.2文件包含345 14.2.3条件编译346 14.2.4编译预处理小结350 14.3位运算351 14.3.1按位与运算351 14.3.2按位或运算352 14.3.3按位异或运算352 14.3.4按位取反运算353 14.3.5按位左移运算353 14.3.6按位右移运算353 14.3.7按位复合赋值运算符353 14.3.8位域(位段)354 14.3.9案例研究357 14.3.10位运算小结359 14.4枚举类型359 14.4.1枚举类型的定义360 14.4.2枚举变量的定义和使用360 14.5本章小结363 14.6习题363 附录AASCII码表365 附录BC语言的关键字367 附录C运算符表369 附录D标准C语言库371 D.1C语言的头文件371 D.2C语言的函数库372 D.2.1输入输出函数372 D.2.2数学函数373 D.2.3动态分配函数和随机函数374 D.2.4字符串函数374 D.2.5字符函数375