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
digitssize 10 đủ cho int 32-bit (tối đa 10 chữ số). - Vòng lặp
do-whileđảm bảo xử lý đúng choval = 0(in "zero").