แปลงตัวเลขแต่ละหลักเป็นคำอ่านภาษาอังกฤษ (ZERO, ONE, TWO...) โดยห้ามใช้ if หรือ switch
วิธีแก้
ใช้ array ของ pointer ชี้ไปที่สตริงคำอ่าน 0-9 แล้วแปลงตัวเลขเป็นสตริงด้วย itoa() แล้ววนลูปพิมพ์คำอ่านตามตัวเลขแต่ละหลัก
โค้ดตัวอย่าง
#include <stdio.h>
#include <stdlib.h>
int main() {
int num = 900;
char *words[10] = {"ZERO", "ONE", "TWO", "THREE", "FOUR",
"FIVE", "SIX", "SEVEN", "EIGHT", "NINE"};
char str[20];
itoa(num, str, 10);
for (int i = 0; str[i] != '\0'; i++)
printf("%s ", words[str[i] - '0']);
return 0;
}
ผลลัพธ์
NINE ZERO ZERO