Menu
CoddyTech

Toán tử modulo

Thuộc phần Kiến thức nền tảng trong hành trình C++ của Coddy. Bài học 17 trên 74.

Toán tử modulo (modulo operator) % cho biết số dư của phép chia. Trong C++, toán tử này dùng cú pháp đơn giản:

result = dividend % divisor;
  • dividend: Số bị chia.
  • divisor: Số chia.
  • result: Số dư của phép chia.

Ví dụ:

result = 10 % 3;

Ở đây, 10 được chia cho 3. 3 chia vào 10 được ba lần, dư 1. Vì vậy, result sẽ là 1.

Thông thường, phép modulo được dùng để kiểm tra một số là chẵn hay lẻ:

  • Nếu một số là số chẵn, chia số đó cho 2 sẽ có số dư bằng 0.
  • Nếu một số là số lẻ, chia số đó cho 2 sẽ có số dư bằng 1, hoặc -1 khi số đó là số âm.

Khi làm việc với số dấu phẩy động (số double) trong C++, bạn không thể dùng trực tiếp toán tử modulo %. Thay vào đó, bạn cần dùng hàm fmod() từ thư viện <cmath>. Hàm này hoạt động tương tự toán tử modulo nhưng vẫn giữ độ chính xác của phần thập phân. Ví dụ:

#include <cmath>

double result = fmod(5.2, 2.0);
// result là 1.2

Cách hoạt động như sau: 2.0 chia hết vào 5.2 được hai lần (4.0), phần dư là 1.2 (5.2 - 4.0 = 1.2).

Một ví dụ khác:

double result = fmod(7.8, 3.5);
// result bằng 0.8

Khi số chia lớn hơn số bị chia, kết quả bằng số bị chia. Điều này áp dụng cho cả % và fmod().

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

Tại sao? Số chia chia được 0 lần, nên toàn bộ số bị chia là số dư.

challenge icon

Thử thách

Người mới

Viết code để khởi tạo ba biến, a (int), b (double) và c (int) với các giá trị lần lượt là 9, 2.6 và 11.

Sau đó, khởi tạo các biến sau:

  • d (int) sẽ lưu kết quả phép chia lấy dư a cho 2 
  • e (int) sẽ lưu kết quả phép chia lấy dư a cho 3
  • f (double) sẽ lưu kết quả phép chia lấy dư b cho 1.5
  • g (double) sẽ lưu kết quả phép chia lấy dư b cho 3.9
  • h (int) sẽ lưu kết quả phép chia lấy dư c cho 10

Xem kết quả và quan sát cách số bị chia và số chia khác nhau ảnh hưởng đến kết quả.

Tự làm thử

#include <iostream>
#include <cmath>

int main() {
    // Viết code của bạn bên dưới
    
    
    // Đừng thay đổi dòng bên dưới
    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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch C++ online