Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Đảo ngược số 2-3 chữ số bằng phép chia và modulo trong C

Mô tả bài toán

Đảo ngược số có 2 hoặc 3 chữ số sử dụng phép chia (/) và modulo (%) mà không dùng vòng lặp.

Logic cơ bản

  • n % 10 → Lấy chữ số hàng đơn vị (phần dư)
  • n / 10 → Lấy phần còn lại (phần nguyên)

Chương trình 1: Đảo ngược số 2 chữ số

#include <stdio.h>

int main() {
    int so;
    
    printf("Nhap so 2 chu so: ");
    scanf("%d", &so);
    
    int hangDonVi = so % 10;   // Chữ số cuối
    int hangChuc    = so / 10; // Chữ số đầu
    
    // Ghép lại theo thứ tự ngược
    printf("So dao nguoc: %d%d\n", hangDonVi, hangChuc);
    
    return 0;
}

Kết quả

Nhap so 2 chu so: 45
So dao nguoc: 54

Chương trình 2: Đảo ngược số 3 chữ số

#include <stdio.h>

int main() {
    int so;
    
    printf("Nhap so 3 chu so: ");
    scanf("%d", &so);
    
    // Tách các chữ số
    int tram  = so / 100;         // Hàng trăm
    int chuc  = (so % 100) / 10;  // Hàng chục
    int donVi = so % 10;          // Hàng đơn vị
    
    // Ghép lại ngược: đơn vị -> chục -> trăm
    int daoNguoc = donVi * 100 + chuc * 10 + tram;
    
    printf("So dao nguoc: %d\n", daoNguoc);
    
    return 0;
}

Kết quả

Nhap so 3 chu so: 479
So dao nguoc: 974

Phân tích chi tiết (479)

Biểu thức Giá trị Giải thích
479 / 1004Hàng trăm (phép chia nguyên)
479 % 100792 chữ số cuối
79 / 107Hàng chục
479 % 109Hàng đơn vị
9*100 + 7*10 + 4974Ghép ngược

So sánh 2 phương pháp

Phương pháp Ưu điểm Nhược điểm
Chia/Modulo (không vòng lặp) Nhanh, đơn giản cho số chữ số cố định Chỉ dùng cho số chữ số biết trước (2, 3)
Vòng lặp while Áp dụng cho mọi độ dài số Chậm hơn chút xíu do overhead vòng lặp

Mở rộng: Đảo ngược n chữ số (kết hợp)

// Nếu biết trước tối đa 6 chữ số
int daoNguocCoDinh(int so) {
    int a[6], n = 0;
    while (so > 0) {
        a[n++] = so % 10;
        so /= 10;
    }
    int kq = 0;
    for (int i = 0; i < n; i++)
        kq = kq * 10 + a[i];
    return kq;
}

Phép chia và modulo là nền tảng của mọi thuật toán xử lý chữ số. Hiểu rõ chúng giúp giải quyết linh hoạt các bài toán liên quan.