从 C++ 的第一行代码,到分支、循环、数组与综合练习。
一个学期,十二段旅程——
认识 Dev-C++ 与 OJ,写出第一个程序,学会变量、输入与输出。
写代码、看错误、交作业——第一步是熟练使用 Dev-C++ 和 OJ。
错误提示是线索,不是失败——先把提示读一遍,再动手改。
运算、变量、命名规则——这些小零件组合起来就是程序。
cin 从键盘读数据,cout 把结果写到屏幕。
cin 会根据变量的类型自动读入,不需要额外的类型转换。scanf 也能输入,留到后面章节再讲。
整数、浮点数、字符、字符串都可以直接输出,endl 换行,\n 也可以。printf 留到后面章节再讲。
用今天的全部知识,做一道完整的输出题。
认识 + - * / % 五个运算符,会写表达式,把整数的每一位拆出来。
加减乘除取模,再加上表达式和优先级——先学会算,再学会算得对。
表达式是一个计算式,值是算出来的结果,可以有常量,也可以有变量。
输入两个整数(1~20 之间),输出周长和面积,用空格隔开。
明明拿 50 元买练习本,一本 3 元,最多能买多少本?还剩多少钱?
/ 得商,% 得余,从左到右逐级计算。
a = a + 1 有更短的写法,还有一类单词不能拿来当变量名。
关键字不能用作变量名、函数名或其它标识符。
用整除和取模,把 12345 的每一位都取出来——这是很多题目的第一步。
取某一位:先 / 10^n 把这一位移到个位,再 % 10 取出来。
分别取出个位、十位、百位,再组合起来。
四道题:先读题,再想公式,最后写代码、看运行结果。
相邻两项的差是常数,即公差。例:1, 3, 5, 7, 9 公差为 2。
整数、浮点、字符、布尔——把数据放进正确的盒子,是写好 C++ 的第一步。
有符号、无符号、溢出——范围的边界决定它能装多大的数。
普通 char 的有无符号由实现决定。
想表达有无符号,请显式写类型。
浮点数能表示小数,但表示是有限的——小心精度误差。
char 存字符也存整数——ASCII 码是中间那座桥。
char 只占 1 字节,本质是一个整数,可以拿来存字符、整数或转义字符。
bool 只有真和假,类型转换要小心丢失信息。
搞懂 ++ 和 -- 的取值顺序,学会 scanf 与 printf 精确控制输入输出。
前缀先加后取值,后缀先取值后加,复合赋值就是它的简写。
scanf 读入、printf 输出,格式符号决定数据的宽度和小数位。
用今天的知识,解两道关于浮点输出与百分号的题目。
综合运用前几单元知识——数据范围、格式化输出、除法与求余。
格式化输出、浮点运算、数列计算、求余——逐个击破。
llround 的结果可放入 long long。
3.6 → 4,3.4 → 3
2.5 → 3,−2.5 → −3
定义使用向 0 截断的商:
r = a − trunc(a/b) × b
用变量和模拟,一步步还原一次分糖果的过程。
回顾今天用到的知识点,准备好课后练习。
用六种关系运算符比较大小,让程序学会“做判断”:if 与 if-else。
关系运算符比较两个值,结果永远是 true 或 false。
运算符优先级决定表达式的分组——记不住就用括号。
if 让程序根据条件走不同路径——这是编程里最基本、最重要的控制结构。
先问“是正数吗?”
是 → 再问“是偶数吗?”
否 → 输出“非正数”。
良好的缩进让 if 结构一目了然,最后用两道题检验今天所学。
用 && || ! 组合条件,学会 if-else 多分支和 switch 语句。
一个条件不够用?用 && || ! 把多个条件拼成一句话。
加上逻辑运算后的常用优先级:! 很高,&& 高于 ||,赋值还是最低。
条件再多也不怕:if-else if-else 从上往下匹配,命中即止。
一个变量等于几,就进哪个 case——多分支的另一种写法。
用 ?: 一行写完分支选择,最后综合运用 if 做几道完整题目。
条件 ? 真值 : 假值——C++ 里唯一的三目运算符。
优先级 + 结合性 + 一般规律——分组与实际执行先后分别分析。
四道主课题:几何判断、计算器、分段函数——都是高频 OJ 题型。
输入:浮点数 0 ≤ x < 20。
输出:y,保留 3 位小数。
骑车准备与停车共 50 秒,速度 3m/s;步行速度 1.2m/s。
输入非负整数距离 d(≤10⁶),输出 Bike / Walk / All。
1000 克以内 8 元;超出部分每 500 克收 4 元,不足 500 克也算一档;加急再收 5 元。
输入重量和 y/n,输出整数邮费。
重复的任务交给计算机——认识 for 的结构、应用、变形与控制,最后综合实战。
重复任务交给计算机——认识 for 的结构与执行流程。
数字序列、累加求和、阶乘——每个都要上手敲一遍。
倒序、步长、嵌套——再学会 break 与 continue 两个控制开关。
数字翻转、水仙花数——经典的循环 + 数位分离题型。
条件说了算的循环——三种循环全家桶对比,加上嵌套与无限循环。
先判断条件再执行循环体——不知道要循环几次时最好用。
本例保证输入为整数;这里只验证数值范围。完整交互还需处理读入失败和 EOF。
先干活再问条件——菜单选择、输入验证的常客。
本例保证输入为整数;这里只验证数值范围。完整交互还需处理读入失败和 EOF。
本例保证输入为整数;这里只验证数值范围。完整交互还需处理读入失败和 EOF。
一张表记住区别,再学会互相转换。
嵌套、无限循环、break/continue——在任何循环里都好用。
把循环用在真题里:递推、数位分离、取模防溢出——学着拆解一类题。
增长率、斐波那契、有效率比较——循环往复数轮就能出答案。
练习输入:先给 T,再给 T 个下标 a。
每个 a 满足 1 ≤ a ≤ 92。
每组输出一行 Fₐ。
先输入 n ≥ 1,再输入 n 组“总人数 有效人数”。第一组是基准。
本页范围:总人数 1~10⁶,有效人数 0~总人数。
数位分离处理每一位,取模运算防止数据爆炸。
练习约定:0 ≤ a ≤ 10⁹,0 ≤ b ≤ 10⁶。
周日对应 0,周一对应 1,依此类推。
一个名字装下整组数据——声明、初始化、遍历、易错点和四道例题一次讲清。
认识数组:为什么需要它、怎么声明、怎么用下标访问。
四种初始化方式 + 字符数组的特殊玩法。
越界、大小误区、整体赋值、字符串结束符——五个高频错误。
for、while、范围 for——三种遍历 + 统计操作。
成绩统计、数组反转、元素查找、冒泡排序。
核心片段:已读入 numbers[0..size-1],0 ≤ size ≤ 1000。
核心片段:已读入 numbers[0..size-1],0 ≤ size ≤ 1000。
核心片段:已读入 numbers[0..size-1],0 ≤ size ≤ 1000。