Files
project1/第02课-循环结构/教案-学生版.md
2026-07-02 16:54:05 +08:00

4.1 KiB
Raw Blame History

第2课循环结构 + 数位拆解

教学目标

  • 掌握 for、while 和 do-while 循环的使用场景
  • 掌握数位拆解技巧(取个位、去个位)
  • 能用循环判断回文数
  • 了解水仙花数的判断方法

核心考点:循环边界与数位拆解

考什么

判断循环次数和结束条件并用循环完成求各位和、________数字、判断回文数等任务。

必须理解

次数明确时常用________结束条件更自然时常用________。数位拆解每轮依次完成、使用这一位、。如果后面还要使用原数必须先________。

核心写法

int num = ________;
int rev = 0;
while (num > 0) {
    int d = num ________ 10;
    rev = rev * ________ + d;
    num ________ 10;
}

do-while 循环

do-while 的特点:循环体至少执行 ______ 次。

do {
    // 循环体
} while (条件);  // 结尾不要漏掉 ______

常见错误

  • 忘记更新循环变量会发生什么________________
  • i < ni <= n 的执行次数有什么区别____________
  • 为什么反转前要备份原数________________

判断是否掌握

  • 我能判断循环的起点、终点和次数。
  • 我能写出取个位与去个位。
  • 我能独立完成数字反转。

课堂编程题

课堂1奇偶分组统计【适中】

题目描述: 输入正整数 n,分别求 1n 中奇数之和、偶数之和,并计算 1n 的乘积。若乘积超过 10^18,输出 TOO LARGE

输入格式: 输入一个正整数。

输出格式: 第一行奇数和与偶数和;第二行乘积或 TOO LARGE

数据范围: 1≤n≤30

输入样例:

5

输出样例:

9 6
120

解题思路: 一个 for 循环同时完成奇偶累加;累乘前判断 product>10^18/i,避免溢出。

易错提醒: 范围是 1n,循环条件必须为 i<=n;累加器和累乘器的初值分别为 0 和 1。


课堂2数字分析报告【适中】

题目描述: 输入一个非负整数,输出它的位数、各位数字之和、最大数字和反转数。

输入格式: 输入一个非负整数。

输出格式: 依次输出位数、各位和、最大数字、反转数。

数据范围: 0≤n≤10^9

输入样例:

50230

输出样例:

5 10 5 3205

解题思路: 备份原数,用 while 重复"取个位、使用个位、去个位";单独处理 n=0

易错提醒: 反转后的前导零不会保留0 本身有一位,不能被普通循环漏掉。


课堂3寻找第一个合格数【适中】

题目描述:1n 中寻找第一个同时满足"能被 7 整除、不能被 5 整除、各位和大于 10"的数。跳过所有含数字 4 的数;找到后立即输出,否则输出 NONE

输入格式: 输入一个正整数。

输出格式: 第一个合格数或 NONE

数据范围: 1≤n≤100000

输入样例:

100

输出样例:

77

解题思路: 外层枚举数字;拆位检查含 4 和各位和。含 4 时 continue,找到答案时 break

易错提醒: continue 跳过本轮,break 结束整个当前循环,两者含义不同。


课堂4区间素数统计【适中·双层循环】

题目描述: 输入 LR,输出闭区间内的所有素数及素数个数。

输入格式: 输入区间的左端点和右端点。

输出格式: 第一行按升序输出素数;第二行输出个数。没有素数时第一行输出 NONE

数据范围: 1≤L≤R≤10000

输入样例:

10 20

输出样例:

11 13 17 19
4

解题思路: 外层枚举候选数,内层从 2 检查到平方根;找到因数立即 break

易错提醒: 1 不是素数;内层的 break 只结束因数检查,不会结束外层枚举。


课后作业

请完成本课对应的课后作业,见编程题文件。