目录 第1章我们与计算机的对话——计算机与C语言 1.1人类梦想与机器伴侣 1.1.1寻找人类的朋友 1.1.2创造人类的伙伴 1.2人类的助手计算机 1.2.1困扰人类发展的两个问题 1.2.2电与二进制引发的技术革命 1.2.3计算机的组织结构 1.3我们如何与计算机对话 1.3.1机器语言很难懂 1.3.2机器语言的进化 1.3.3C语言与人类语言的区别 1.3.4我们如何使用C语言 1.4从问题到程序的过程 1.4.1程序也需要设计 1.4.2算法的描述很重要 1.4.3结构化的流程图 1.4.4让我们开启第一次与计算机对话的旅程 1.5本章小结 1.6习题 第2章让计算机学会运算——基本数据类型 2.1教计算机认识整数 2.1.1十进制与二进制 2.1.2计算机的数字仓库——存储器 2.1.3计算机认识的整数是有限的 2.1.4负整数的表示与存储有点不一样 2.1.5C语言中的整数类型 2.2教计算机认识小数 2.2.1小数点很关键 2.2.2小数的存储与整数不一样 2.2.3计算机存储的小数可能不精确 2.2.4计算机认识的小数也是有限的 2.2.5C语言中的浮点数类型 2.3教计算机认识字符 2.3.1图形字符的巧妙表示 2.3.2计算机认识的字符也是有限的 2.3.3C语言中的字符类型 2.4教计算机“记忆”数据 2.4.1数据的门牌号——内存地址 2.4.2变化的数据是变量 2.4.3指针变量的定义 2.4.4两种访问变量的方法 2.4.5*常变量 2.4.6不变的数据是常量 2.5教计算机认识运算符 2.5.1算术运算符与算术表达式 2.5.2关系运算符与关系表达式 2.5.3逻辑运算符与逻辑表达式 2.5.4赋值运算符与赋值表达式 2.5.5强制类型转换运算符 2.5.6不同数据类型间的混合运算 2.5.7*位运算符 2.6教计算机做简单的运算 2.6.1如何书写语句 2.6.2如何组织语句 2.6.3简单运算举例 2.7本章小结 2.8习题 第3章与计算机面对面地交流——数据的输入与输出 3.1我们与计算机的交流方式 3.1.1人类与计算机理解数据的差异性 3.1.2计算机如何输入和输出数据 3.1.3两种对话方式的选择 3.2通过键盘和显示器与计算机交流 3.2.1C语言标准函数库 3.2.2通过键盘输入数据 3.2.3通过显示器输出数据 3.2.4通过键盘和显示器完成一次完整对话 3.3通过文件与计算机交流 3.3.1记录我们与计算机之间的对话 3.3.2我们可以阅读的文件 3.3.3我们无法阅读的文件 3.3.4顺序读写与按需读写 3.3.5*文件读写的出错问题 3.3.6文件合并示例 3.4本章小结 3.5习题 第4章让计算机做复杂的事情——顺序、选择与循环语句 4.1分步骤完成任务 4.1.1控制语句 4.1.2按部就班地解决问题 4.2遇到选择该怎么办 4.2.1用if实现“二选一” 4.2.2用switch实现“多选一” 4.3选择结构很有用 4.3.1顺序结构是基础 4.3.2灵活选用选择语句 4.3.3提高程序的可靠性 4.4用循环语句解决重复性计算问题 4.4.1发现循环要素 4.4.2如何构建循环结构 4.4.3如何灵活退出循环 4.4.4多重循环结构的实现挺困难 4.5有趣的循环问题举例 4.5.1循环程序的构建 4.5.2用循环实现枚举法 4.5.3循环语句的优化 4.6本章小结 4.7习题 第5章像搭积木一样搭建程序——函数 5.1复杂程序的开发问题 5.1.1像工业化生产一样开发程序 5.1.2将程序代码做成积木模块的方法 5.2对程序模块进行组装 5.2.1程序模块间的组装问题 5.2.2递归思想的程序实现 5.3人类永恒的话题“矛盾”: 封闭性与开放性 5.3.1不准动我的积木 5.3.2我偏要动你的积木 5.4函数举例 5.4.1求三角形的面积 5.4.2利用函数实现简单的文件操作 5.5本章小结 5.6习题 第6章同类型数据的批量处理问题——数组 6.1如何一次定义多个变量 6.1.1定义一组变量的方法 6.1.2数组初始化 6.1.3引用数组元素 6.1.4特殊的“变量”标识符 6.2数组的存储机理 6.2.1与众不同的数组名 6.2.2“[]”运算符的作用 6.2.3数组地址不允许改变 6.2.4穿马甲的“数组” 6.3灵活运用数组 6.3.1通过数组处理一批数字 6.3.2将字符拼接成字符串 6.3.3通过数组名向函数传递数据 6.4根据维度存储数据的方法 6.4.1二维数组的本质 6.4.2二维数组初始化 6.4.3二维数组使用 6.4.4*更多维度的数组 6.5本章小结 6.6习题 第7章人类思维视角下的数据类型——用户自己建立的数据类型 7.1从人类的视角看数据 7.1.1人类需要什么样的数据类型 7.1.2*自由地命名数据类型 7.2有结构的数据类型——结构体 7.2.1莫把结构体当变量 7.2.2结构体变量的定义与初始化 7.2.3结构体变量的引用 7.2.4*结构体变量的存储 7.2.5定义结构体数组 7.2.6结构体的应用 7.3“勤俭节约”的数据类型——共用体 7.3.1存储空间很宝贵 7.3.2能省一点是一点 7.3.3正确区分结构体与共用体 7.4“有限取值”的数据类型——枚举类型 7.4.1事先约定好处多 7.4.2*无穷无尽莫找我 7.5*用户自己建立数据类型的综合应用 7.5.1用数组维护有序数据很烦琐 7.5.2适合描述有序数据的结构——链表 7.5.3数据再多也不怕 7.5.4动态链表更灵活 7.6本章小结 7.7习题 第8章程序写得好关键在算法 8.1算法的性能评价 8.2用试商法求解素数 8.2.1试商法判定素数 8.2.2试商法搜索素数 8.3用数组实现大数求和 8.3.1“列竖式”实现大数求和 8.3.2大数求和的程序实现 8.4用冒泡法实现排序 8.4.1冒泡排序的思想 8.4.2冒泡排序的程序实现 8.5用二分法实现查找 8.5.1二分查找的思想 8.5.2二分查找的程序实现 8.6*用递归优化求数列 8.6.1“暴力递归”问题 8.6.2利用“备忘录”优化递归 8.7本章小结 8.8习题 附录AC语言中的关键字 附录B常用字符与ASCII代码对照表 附录C运算符的优先级和结合性 附录D常用库函数 参考文献