女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

14 颗糖,每袋放 4 颗。装完完整的袋子,桌上还剩几颗?

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 第一袋剩 10 颗
  2. 第二袋剩 6 颗
  3. 第三袋剩 2 颗
  4. 余数不够再装一袋

对这里的非负整数,14 % 4 得 2,表示除以 4 后的余数。

它能帮助判断整除,也能让编号循环。例如编号 0、1、2 后,(2 + 1) % 3 回到 0。

01% 到底算什么?

在 C++ 中,% 对整数计算余数

17 % 5   // 2

因为 17 = 5 × 3 + 2

02怎样判断奇数和偶数?

if (n % 2 == 0) {
    // 偶数
}

能被 2 整除,余数就是 0;否则就是奇数。

03怎样判断能不能整除?

判断 a 是否能被 b 整除,可以检查:

a % b == 0

例如 20 % 5 == 0,所以 20 能被 5 整除。

04为什么循环位置特别喜欢用 %?

如果一排只有 7 个位置,希望编号不断循环:

position = step % 7;
0123456再回到 0

这在星期、环形数组、周期动画中都很常见。

05负数的余数要小心

C++ 中整数除法向 0 截断,余数满足:

a == (a / b) * b + a % b

因此:

-7 % 3   // -1
 7 % -3  //  1

06% 能对小数使用吗?

C++ 的内置 % 运算符用于整数类型,不能直接对 double 使用。

浮点余数有其他函数,例如 std::fmod,它和整数 % 不是同一个运算符。

你已经知道了什么

  • % 在 C++ 中计算整数除法的余数。
  • 它常用于判断奇偶、整除和循环位置。
  • 除数不能为 0。
  • 负数余数遵循 C++ 的整数除法规则,不一定是非负数。
  • 内置 % 不能直接用于浮点数。

下一篇:比较两个数

轮到你来试一试

17 颗糖每袋 5 颗,17 % 5 是多少?

想好了吗?点开看解释

可以装 3 袋,使用 15 颗,剩 2 颗,所以余数是 2。用“商乘除数加余数”等于原数检查。