
一起动脑筋 · 先看一个小故事
14 颗糖,每袋放 4 颗。装完完整的袋子,桌上还剩几颗?
把过程摊开来看
- 第一袋剩 10 颗
- 第二袋剩 6 颗
- 第三袋剩 2 颗
- 余数不够再装一袋
对这里的非负整数,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。用“商乘除数加余数”等于原数检查。