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ố thành chữ

Cho chuỗi số, chuyển đổi thành đọc bằng chữ. Ví dụ: "361" → "Ba trăm sáu mươi mốt".

Chương trình hỗ trợ số từ 0 đến 9999 (tối đa 4 chữ số).

Ví dụ

Input: "1234" → Output: "một nghìn hai trăm ba mươi tư"
Input: "7777" → Output: "bảy nghìn bảy trăm bảy mươi bảy"

Phương pháp:

  • Nhập chuỗi số.
  • Dùng mảng chứa từ cho hàng đơn vị, chục (10-19), chục tròn (20,30...), hàng trăm/nghìn.
  • Xử lý theo độ dài chuỗi: nghìn, trăm, chục, đơn vị.

Mã nguồn C

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

void convert(char *num) {
    int len = strlen(num);
    if (len == 0) { fprintf(stderr, "Chuỗi rỗng\n"); return; }
    if (len > 4) { fprintf(stderr, "Chỉ hỗ trợ đến 4 chữ số\n"); return; }

    char *single[] = {"không","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"};
    char *teens[]  = {"","mười","mười một","mười hai","mười ba","mười tư","mười lăm","mười sáu","mười bảy","mười tám","mười chín"};
    char *tens[]   = {"","","hai mươi","ba mươi","bốn mươi","năm mươi","sáu mươi","bảy mươi","tám mươi","chín mươi"};
    char *powers[] = {"trăm","nghìn"};

    printf("\n%s: ", num);
    if (len == 1) { printf("%s\n", single[*num - '0']); return; }

    while (*num != '\0') {
        if (len >= 3) {
            if (*num - '0' != 0) {
                printf("%s %s ", single[*num - '0'], powers[len-3]);
            }
            len--; num++;
        } else {
            if (*num == '1') {
                int sum = *num - '0' + *(num+1) - '0';
                printf("%s\n", teens[sum]);
                return;
            } else if (*num == '2' && *(num+1) == '0') {
                printf("hai mươi\n"); return;
            } else {
                int i = *num - '0';
                printf("%s ", i ? tens[i] : "");
                num++;
                if (*num != '0') printf("%s ", single[*num - '0']);
            }
        }
    }
}

int main() {
    convert("9132");
    return 0;
}

Kết quả

chín nghìn một trăm ba mươi hai