用 / 和 % 拆开数字
这一课只练一件事:用 和 拆开 。个位是 x % 10,去掉个位是 x / 10,循环直到变成 0。同一套余数想法也能求 。完成四个小任务:选出拆法,走一遍 125,再看 GCD 与 。这里不会在浏览器里运行 C++。
任务 1:先选出怎么拆数位
取出个位看 ,去掉个位看 。一个整数的 从右边开始剥。点不认识的词可看基础解释。
必会:能拆分一个三位数。这里不会在浏览器里运行 C++,只练习选择和走过程。
取出个位该怎么做?数位 · 必会
去掉个位还剩什么?整除 · 必会
任务 2:按顺序拆开 125
最小示例:x % 10 取出个位,x / 10 去掉个位。按顺序点三步,把 125 拆成 5、2、1。这里不会在浏览器里运行 C++。
必会:能拆分一个三位数。边界:最后一次 1 / 10 得到 0,循环必须停;不要跳过中间的 12。
- int x = 125;
- int digit = x % 10; // 5
- x = x / 10; // 12
- while (x > 0) { /* 继续剥,直到 x 变成 0 */ }
三步走完了,现在亲手把取个位的那一行敲出来。十进制里最右边那一位就是 的个位,用 留下的余数拿出来。下面是只读脚手架,只留一空给你敲键盘。
- int x = 125;
- int digit = ; // 取出个位
- cout << digit; // 屏幕上出现 5
- x = x / 10; // 去掉个位,x 变成 12
int digit = x % 10; // x = 125 时结果是 5:% 拿余数,10 决定取的是十进制个位
任务 3:用余数求 GCD,并看循环何时停
建议掌握:求 用辗转相除,和拆数位一样靠余数。必会还包括解释循环何时结束:余数变成 0。 是每一轮都成立的关系。
必会 / 建议掌握 / 拓展:必会是拆各位、说明 n 变成 0 就停。建议掌握是 gcd(12, 8)=4,以及每轮「公约数不变」。扩展欧几里得、中国剩余定理和素性测试是拓展,现在不用当硬门槛。
- int a = 12, b = 8;
- int r = a % b; // 12 % 8 = 4
- a = b; b = r; // 换成 8 和 4
- while (b != 0) { /* 余数为 0 时,a 就是 gcd */ }
先选出求 12 和 8 的 GCD 该怎么做:
再选出循环何时结束、每轮保住什么:
任务 4:随机小测,看看你是否真的懂了
每次从本课题库抽出三道不同的选择题。题目与解析已通过校验,答完后看解析,不要只看分数;拿不准就回到对应任务再看一遍。