# 11.8 数位与分支六题 · 教学总纲

基础：学生已会变量、整除求余、while、if/else。整套约 90 分钟，可按课堂情况拆分讲评。每份 HTML 两个主题，主题内手动推进。GNU C++14。

## 全课主线

取个位是共同入口；不同问题只改变“怎样处理这个位”。校验位先求和后用余数补齐；奇偶和按数字本身分组；反转把取出的位接到结果右端；交错和让符号随位置翻转。随后回到分支分类：月份互斥分组，海雾按题目顺序筛选剩余情况。

## 补齐校验位（约 17 分钟）

每轮删掉一位，求和从 0 开始；余数为 0 时校验位也是 0。

- **怎样把编号拆开？**：从“给编号 507 选一个校验位”起步，以“n 变成 0：所有数位都处理完了”收束。
- **怎样恰好补到整十？**：从“各位和为 12，离下一个整十还差多少？”起步，以“循环结束后，只输出校验位”收束。

## 奇偶数位之和（约 15 分钟）

分类依据是 d%2，而不是处理轮数或所在位置。0 是偶数。

- **按数字本身分类**：从“要把哪些数字送进同一组？”起步，以“处理完全部数位，输出两个和”收束。
- **两个和怎样维护？**：从“一个数位，只更新它所属的那一组”起步，以“为什么循环结束时，两个和就是答案？”收束。

## 反转整数（约 17 分钟）

用乘 10 再加个位来接数字；开头的零自然不显示，中间的零正常占位。

- **新数字怎样接到右边？**：从“12030 反转以后，为什么不是 03021？”起步，以“把 1 接到当前结果的右边”收束。
- **零为什么会被正确处理？**：从“开头零消失，中间零留下”起步，以“用短例子检查同一条规则”收束。

## 交错数位和（约 16 分钟）

sign 记录当前数位符号；处理后翻转，0 也占位置。

- **给每个数位安排符号**：从“从哪一位开始加，决定了最后的正负”起步，以“所有位处理完，交错数位和为 −8”收束。
- **符号怎样保持交替？**：从“取到 0 时，还要翻转符号吗？”起步，以“为什么任意位数都能沿用这个循环？”收束。

## 小硬壳读懂潮汐日历（约 12 分钟）

日期读入但不参与判断；冬季跨年；三个闭区间之后剩余为冬季。

- **冬季为什么跨过年界？**：从“输入月份和日期，哪一个决定季节？”起步，以“9～11 月属于秋季”收束。
- **四组月份怎样写进分支？**：从“先判断春、夏、秋，剩下的是谁？”起步，以“跨季边界，应该在哪一边？”收束。

## 小硬壳记录海雾能见度（约 13 分钟）

直接出航要求距离与无雨同时成立；其他达到 400 米的情况仍能减速。

- **先出航，再判断减速**：从“能见度够远，就一定可以直接出航吗？”起步，以“同一距离，有雨和无雨可能得到不同结果”收束。
- **边界与分支顺序怎样配合？**：从“800 米和 400 米，都要包含边界”起步，以“把三个独立 if 写在一起，会发生什么？”收束。

## 取舍与时间

各题用时合计约 90 分钟。讲评时可按学生掌握程度缩短已会的拆位操作，保留关键反例与正确性说明。全课不引入字符串替代算法，不虚构部分分。所有数值变化来自合法离散状态，推导中的累计量可追溯。
