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

Chương trình C chuyển đổi số La Mã sang số thập phân

Thuật toán

  1. Đọc chuỗi số La Mã.
  2. Chuyển mỗi ký tự thành giá trị: I=1, V=5, X=10, L=50, C=100, D=500, M=1000.
  3. Duyệt mảng giá trị: nếu giá trị hiện tại nhỏ hơn giá trị tiếp theo thì trừ, ngược lại thì cộng.

Chương trình C

#include <stdio.h>
#include <string.h>

main() {
    char roman[30];
    int deci = 0, length, i, d[30];

    printf("Bảng chuyển đổi:\n");
    printf("1 -> I\n5 -> V\n10 -> X\n50 -> L\n100 -> C\n500 -> D\n1000 -> M\n");
    printf("Nhập số La Mã: ");
    scanf("%s", roman);

    length = strlen(roman);
    for (i = 0; i < length; i++) {
        switch (roman[i]) {
            case 'm': case 'M': d[i] = 1000; break;
            case 'd': case 'D': d[i] = 500; break;
            case 'c': case 'C': d[i] = 100; break;
            case 'l': case 'L': d[i] = 50; break;
            case 'x': case 'X': d[i] = 10; break;
            case 'v': case 'V': d[i] = 5; break;
            case 'i': case 'I': d[i] = 1; break;
        }
    }

    for (i = 0; i < length; i++) {
        if (i == length - 1 || d[i] >= d[i+1])
            deci += d[i];
        else
            deci -= d[i];
    }

    printf("Giá trị thập phân của %s là %d\n", roman, deci);
}

Kết quả

Nhập số La Mã: M
Giá trị thập phân của M là 1000