Menu
CoddyTech

取模运算符

本课属于 Coddy C++ 学习旅程的“基础知识”单元。第 17 课,共 74 课。

取模运算符 % 用于求除法的余数。在 C++ 中,它的语法很简单:

result = dividend % divisor;
  • 被除数:被除的数。
  • 除数:用来除被除数的数。
  • 结果:除法的余数。

例如:

result = 10 % 3;

这里,10 除以 3。3 在 10 中可以除 3 次,余数是 1。因此,result 的值为 1。

通常,取模用于检查一个数是偶数还是奇数:

  • 如果一个数是偶数,那么它除以 2 的余数是 0。
  • 如果一个数是奇数,那么它除以 2 的余数是 1;如果这个数是负数,余数则是 -1。

在 C++ 中处理浮点数(双精度数)时,不能直接使用取模运算符 %。你需要改用 <cmath> 库中的 fmod() 函数。它的作用与取模运算符类似,但会保留小数精度。例如:

#include <cmath>

double result = fmod(5.2, 2.0);
// result 的值是 1.2

它的工作原理是这样的:5.2 里可以放入 2 个 2.0(共 4.0),余数是 1.2(5.2 - 4.0 = 1.2)。

另一个例子:

double result = fmod(7.8, 3.5);
// result 的值为 0.8

当除数大于被除数时,结果等于被除数。这对 % 和 fmod() 都适用。

5 % 10 = 5
3 % 7 = 3
fmod(2.5, 8.0) = 2.5

为什么?除数一次也除不进去,所以整个被除数就是余数。

challenge icon

挑战

入门

编写代码,初始化三个变量:a (int)、b (double) 和 c (int),它们的值分别为 9、2.6 和 11。

然后,初始化以下变量:

  • d (int),用于保存 a 除以 2 的余数 
  • e (int),用于保存 a 除以 3 的余数
  • f (double),用于保存 b 除以 1.5 的余数
  • g (double),用于保存 b 除以 3.9 的余数
  • h (int),用于保存 c 除以 10 的余数

查看结果,看看不同的被除数和除数会如何影响结果。

亲手试试

#include <iostream>
#include <cmath>

int main() {
    // 在下方输入你的代码
    
    
    // 不要修改下面这行代码
    std::cout << "a = " << a << std::endl;
    std::cout << "b = " << b << std::endl;
    std::cout << "c = " << c << std::endl;
    std::cout << "d = " << d << std::endl;
    std::cout << "e = " << e << std::endl;
    std::cout << "f = " << f << std::endl;
    std::cout << "g = " << g << std::endl;
    std::cout << "h = " << h << std::endl;
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: C++ 在线编译器