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

Chương trình C# chuyển đổi chữ số thành từ (Digits to Words)

Chuyển mỗi chữ số (0-9) của một số nguyên thành từ tiếng Anh tương ứng. Ví dụ: 4677 → "four six seven seven".

Mã nguồn

using System;

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            // Từ cho các chữ số 0-9
            string[] digitsWords = { 
                "zero", "one", "two", "three", "four",
                "five", "six", "seven", "eight", "nine"
            };
            
            int val = 4677;
            Console.WriteLine("Số: " + val);
            Console.Write("Số (từ): ");
            
            // Tách các chữ số (từ cuối về đầu)
            int[] digits = new int[10];
            int numDigits = 0;
            
            do {
                digits[numDigits++] = val % 10;
                val /= 10;
            } while (val > 0);
            
            // In ngược lại (từ chữ số cao nhất)
            for (int i = numDigits - 1; i >= 0; i--) {
                Console.Write(digitsWords[digits[i]] + " ");
            }
            Console.ReadLine();
        }
    }
}

Kết quả

Số: 4677
Số (từ): four six seven seven

Cách hiện đại (LINQ)

int val = 4677;
string[] words = { "zero","one","two","three","four","five","six","seven","eight","nine" };

string result = string.Join(" ", 
    val.ToString()
       .Select(c => words[c - '0']));

Console.WriteLine(result); // four six seven seven

Mở rộng: Đọc số thành chữ tiếng Việt

Phức tạp hơn do quy tắc tiếng Việt (mươi, mốt, lăm, trăm, nghìn, triệu...). Thường dùng thư viện hoặc viết hàm đệ quy xử lý theo nhóm 3 chữ số.

Lưu ý

  • Code gốc chỉ chuyển từng chữ số riêng lẻ — không đọc thành số tự nhiên (4677 ≠ "four thousand six hundred seventy-seven").
  • Mảng digits size 10 đủ cho int 32-bit (tối đa 10 chữ số).
  • Vòng lặp do-while đảm bảo xử lý đúng cho val = 0 (in "zero").