目 录第1章 什么是程序?1.1 从生活中的场景说起1.2 编写程序的工具1.3 程序的编写、编译和运行1.4 在线评测系统1.5 案例1:Hello world!1.6 案例2:时间换算(1)1.7 案例3:输出杨辉三角(1)1.8 练习1:用cout语句输出星号菱形1.9 练习2:小学比幼儿园远多少米1.10 练习3:输出数字螺旋矩阵(1)1.11 拓展阅读:C++关键字1.12 计算机小知识:Hello world程序1.13 总结第2章 变量是一个魔法盒2.1 记录身高和体重2.2 用字母代表人、物或数据2.3 常量和变量2.4 数据类型2.5 案例1:求矩形的面积和周长(1)2.6 案例2:超市购物2.7 案例3:变量是一个魔法盒2.8 练习1:长身高2.9 练习2:剩余座位2.10 练习3:需要多少块砖2.11 拓展阅读:基本的数据类型2.12 计算机小知识:“缺斤少两”的U盘2.13 总结第3章 数据从何而来——输入3.1 更强大的程序3.2 案例1:求女生的人数3.3 案例2:时间换算(2)3.4 案例3:交换两个变量的值(1)3.5 练习1:交换两个变量的值(2)3.6 练习2:求矩形的面积和周长(2)3.7 练习3:速度单位换算(1)3.8 拓展阅读:在线评测系统的工作原理3.9 计算机小知识:人和计算机是怎么交互的3.10 总结第4章 让计算机帮我们做算术题4.1 从买酸奶说起4.2 运算、运算符和表达式4.3 算术运算符和算术表达式4.4 商和余数4.5 除以10、对10取余4.6 案例1:时间换算(3)4.7 案例2:赋值运算符练习4.8 案例3:报数游戏4.9 练习1:小实验——前置++和后置++4.10 练习2:数字魔术——三位数还原4.11 练习3:三位数的数字之和4.12 拓展阅读:运算符的优先级和结合性4.13 计算机小知识:C、C++名称的由来4.14 总结第5章 精确到小数的运算5.1 从“打折”说起5.2 圆的周长及圆周率5.3 案例1:速度单位换算(2)5.4 案例2:折扣5.5 案例3:求长方体的表面积和体积5.6 练习1:分数→无限循环小数5.7 练习2:求正方形和圆的面积(1)5.8 练习3:计算球的表面积和体积5.9 拓展阅读:自动类型转换和强制类型转换5.10 计算机小知识:实数与浮点数5.11 总结第6章 拿来主义——数学函数的使用6.1 从工具箱玩具说起6.2 平方和平方根、立方和立方根6.3 案例1:勾股定理(1)6.4 案例2:2的n次方6.5 案例3:立方体边长和球体直径6.6 练习1:求正方形和圆的面积(2)6.7 练习2:浮点数不能精确表示6.8 练习3:浮点数的整数商和余数6.9 计算机小知识:复制粘贴是由谁提出来的?6.10 总结第7章 一路前行——顺序结构7.1 从“把大象放进冰箱”说起7.2 算法就是求解问题的步骤7.3 程序控制结构7.4 案例1:三角形的面积7.5 案例2:鸡兔同笼问题(1)7.6 案例3:获奖比例7.7 练习1:预测孩子的身高7.8 练习2:华氏温度转摄氏温度7.9 练习3:比赛成绩7.10 计算机小知识:三种基本的程序控制结构7.11 总结第8章 分支结构——if语句8.1 抱一和妈妈谈“条件”8.2 条件判断和分支结构8.3 C++语言中的分支结构8.4 案例1:加分8.5 案例2:求三个数的最大值8.6 案例3:四边形的判断(方法1)8.7 练习1:3的倍数(方法1,取余运算符)8.8 练习2:找座位8.9 练习3:要不要开空调8.10 总结第9章 条件怎么形成——关系表达式和逻辑表达式9.1 又高又壮的同学9.2 判断和多个判断9.3 逻辑“与”和逻辑“或”的例子9.4 布尔型数据9.5 案例1:语文和数学都考95分以上9.6 案例2:三角形的判断9.7 案例3:闰年的判断9.8 练习1:复杂的逻辑判断9.9 练习2:四边形的判断(方法2)9.10 练习3:身高达标吗9.11 计算机小知识:Bug和Debug9.12 总结第10章 多分支与switch语句10.1 又见“打折”10.2 案例1:商场打折10.3 案例2:CCF CSP-J/S比赛成绩10.4 switch语句10.5 案例3:VIP顾客等级10.6 练习1:百分制成绩转五级制成绩10.7 练习2:9岁男孩的身高标准10.8 练习3:巧虎机器人(初级版)10.9 计算机小知识:C++的版本10.10 总结第11章 知道要反复执行多少次——for循环11.1 循环就是重复11.2 循环结构11.3 数列及相关问题11.4 在程序中实现数学上的递推11.5 案例1:输出广播体操的口令11.6 案例2:求1+2+3+…+n(1)11.7 案例3:求阶乘11.8 练习1:求n个数的和11.9 练习2:求1~n范围内3的倍数的和11.10 练习3:求数列前n项和11.11 计算机小知识:计算机的运算速度有多快11.12 总结第12章 依条件而循环——while循环和do-while循环12.1 给足球打气的两种方式12.2 while循环和do-while循环12.3 永真循环、死循环12.4 案例1:求1+2+3+…+n(2)12.5 案例2:前n项和超过m12.6 案例3:输出整数的每一位数12.7 练习1:数列1, 1, 2, 1, 2, 3, 1, 2, 3, 4,…的第n项12.8 练习2:3的倍数(方法2,求各位和)12.9 练习3:等比数列第几项超过m12.10 总结第13章 一个结构套另一个结构——结构的嵌套13.1 俄罗斯套娃玩具——嵌套13.2 程序控制结构的嵌套13.3 计数器和累加器13.4 案例1:吃苹果13.5 案例2:求整数中非零数字的个数13.6 案例3:兔子问题——斐波那契数列(1)13.7 练习1:求n个数的最大值13.8 练习2:闰年的个数13.9 练习3:求等差数列的和13.10 总结第14章 退出循环和跳过当前这一轮循环14.1 抄写古诗和数字20遍14.2 退出循环和跳过当前循环14.3 案例1:质数的判定(break语句)14.4 案例2:输出1~100中的质数14.5 案例3:用while(true)循环求数列和14.6 练习1:数列1, 2, 3, 2, 3, 414.7 练习2:斐波那契数列(2)14.8 练习3:斐波那契数列(3)14.9 总结第15章 循环包含循环——循环的嵌套15.1 九九乘法表的规律15.2 循环的嵌套15.3 枚举算法的思想15.4 案例1:数字之和(1)15.5 案例2:输出数字图案15.6 案例3:鸡兔同笼问题(2)15.7 练习1:统计1~N范围内的质数个数15.8 练习2:百钱百鸡问题15.9 练习3:勾股定理(2)15.10 总结第16章 存多个数据的容器——(一维)数组16.1 带格子的收纳盒——数组的引入16.2 数组和元素16.3 案例1:某年某月的天数16.4 通过循环处理一维数组16.5 案例2:斐波那契数列(4)16.6 案例3:数列1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6,…的前n项和16.7 练习1:数列1, 1, 2, 1, 2, 3, 1, 2, 3, 4,…的前n项和(1)16.8 练习2:将一个正整数逆序16.9 练习3:求一组数的最值和平均值16.10 总结第17章 表格型容器——二维数组17.1 方格作业本——二维数组的引入17.2 用数组存储多个有关联的数据17.3 二维数组就是二维表格17.4 用循环处理二维数组17.5 案例1:求二维数组中的最大元素17.6 案例2:求一个矩阵中的鞍点17.7 案例3:输出数字螺旋矩阵(2)17.8 练习1:二维1, 2, 3, 2, 3, 4, 3, 4, 5, 4,…17.9 练习2:统计矩阵中各类数的个数17.10 练习3:输出杨辉三角形(2)17.11 拓展阅读:三维数组17.12 总结第18章 非数值型数据——字符和字符串18.1 从身份证号说起18.2 字符和字符串18.3 ASCII编码18.4 字符、字符串和字符数组18.5 用字符数组读入一个整数18.6 案例1:字符转换——模运算符18.7 案例2:简单的字符串加密18.8 案例3:统计各类字符的个数18.9 练习1:数字之和(2)18.10 练习2:计算单词的得分18.11 练习3:提取连续的数字字符串18.12 计算机小知识:汉字编码18.13 总结第19章 “逢十进一”的由来——进位计数制19.1 开关面板——二进制的引入19.2 数位和计数单位19.3 进位计数制19.4 二值的表示19.5 二进制、十六进制加减运算19.6 计量数据大小的单位19.7 用二进制数数19.8 理解整型(int, long long)的范围19.9 案例1:猜数字魔术(心灵感应魔术)19.10 案例2:以八进制、十六进制输出数据19.11 案例3:以八进制、十六进制输入数据19.12 二进制、八进制和十六进制的相互转换19.13 练习1:生日蜡烛19.14 练习2:二进制数19.15 计算机小知识:程序员节19.16 总结第20章 进制转换问题20.1 单位换算问题20.2 一斤十六两20.3 进制的转换20.4 案例1:十进制换位运算20.5 案例2:其他进制转十进制20.6 案例3:十进制转其他进制20.7 练习1:数码1的位置20.8 练习2:字节内容20.9 练习3:雷劈数20.10 总结第21章 字符及字符串处理21.1 用草串着卖的鸡蛋21.2 字符串处理函数21.3 字符串类string21.4 案例1:计算两个字符串的相关性21.5 案例2:校验和21.6 案例3:从整数中提取出4个字符21.7 练习1:比较大整数的大小关系21.8 练习2:输出月份(二维字符数组)21.9 拓展阅读:万能头文件21.10 总结第22章 通过函数实现功能分解22.1 设计师的梦想22.2 函数就是功能22.3 函数的分类22.4 案例1:质数的判定(用函数实现)22.5 案例2:求两个数的较大者(用函数实现)22.6 案例3:数组元素逆序(用函数实现)22.7 练习1:斐波那契数列(5)22.8 练习2:区间内所有质数(用函数实现)22.9 练习3:闰年的判定(用函数实现)22.10 总结:如何设计函数的参数和返回值22.11 计算机小知识:结构化程序设计22.12 总结第23章 递归及递归函数设计23.1 从前有座山23.2 案例1:递归求阶乘23.3 递归函数23.4 案例2:猴子吃桃问题23.5 案例3:求最大公约数23.6 练习1:斐波那契数列(6)23.7 练习2:角谷猜想(用递归实现)23.8 练习3:数字之和(3)23.9 总结第24章 简单排序算法24.1 从顺序说起24.2 排序及排序函数24.3 字典序24.4 案例1:插入排序24.5 案例2:冒泡排序24.6 案例3:简单选择排序24.7 练习1:字符串排序24.8 练习2:坐电梯取钻石游戏24.9 练习3:字符排序24.10 总结第25章 排序问题及处理25.1 致柔的游戏规则25.2 sort排序函数25.3 案例1:谁在中间25.4 案例2:前20%和后20%25.5 练习1:合影效果25.6 练习2:单词重组25.7 总结第26章 如何高效地查找?26.1 折纸和剪线26.2 查找26.3 案例1:顺序查找26.4 案例2:二分查找26.5 练习1:猜数字游戏26.6 关于二分查找的相关函数26.7 练习2:有多少个元素比b小(大)26.8 总结第27章 结构体27.1 设计一种新的笔27.2 自定义数据类型——结构体27.3 一级排序和二级排序27.4 排序时指定排序规则——cmp函数27.5 案例1:成绩排序27.6 案例2:按照个位数排序27.7 练习1:序列排序27.8 练习2:病人排队27.9 总结第28章 枚举算法28.1 送你一个智慧28.2 枚举算法的思想及实现要点28.3 算法及算法的效率28.4 案例1:求x2 \+ y2 = n的正整数解28.5 案例2:既是平方数也是立方数28.6 练习1:验证哥德巴赫猜想28.7 练习2:和为给定数28.8 计算机小知识:1秒钟100 000 000次运算28.9 总结第29章 模拟算法29.1 从模拟考试说起29.2 模拟算法的思想及实现要点29.3 案例1:出列游戏29.4 案例2:单身贵族游戏29.5 练习1:爬动的蠕虫29.6 练习2:求一个整数的回文数步数29.7 总结第30章 数据结构基础知识30.1 结束不是终止,而是一个新的开始30.2 数据结构基本概念30.3 标准模板库30.4 向量30.5 队列30.6 案例1:数列1, 1, 2, 1, 2, 3, 1, 2, 3, 4,…前n项和(2)30.7 案例2:输出杨辉三角形(用向量实现)30.8 练习1:出列游戏(用队列实现)30.9 练习2:机器翻译30.10 总结后 记 参考文献 附 录 课程资源使用说明