Program to Convert Digit/Number to Words in C
Converting Numbers to Words
Converting a number to words is a common problem in programming.
We will explore three different methods to achieve this in C.
Method 1: Using Arrays
This method utilizes arrays to map digits to their word equivalents.
#include <stdio.h>
void convertToWords(int num) {
char *single_digits[] = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
printf("%s", single_digits[num]);
}
int main() {
int num;
printf("Enter a single-digit number: ");
scanf("%d", &num);
if (num >= 0 && num <= 9)
convertToWords(num);
else
printf("Invalid input!");
return 0;
}
Output: Five
Method 2: Using String Manipulation
This method handles multi-digit numbers using a loop.
#include <stdio.h>
#include <string.h>
void convertToWords(int num) {
char *single_digits[] = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
char str[20];
sprintf(str, "%d", num);
for (int i = 0; i < strlen(str); i++) {
printf("%s ", single_digits[str[i] - '0']);
}
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
convertToWords(num);
return 0;
}
Output: One Two Three
Method 3: Using Recursion
This method recursively processes each digit.
#include <stdio.h>
char *single_digits[] = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
void convertToWordsRecursive(int num) {
if (num == 0)
return;
convertToWordsRecursive(num / 10);
printf("%s ", single_digits[num % 10]);
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (num == 0)
printf("Zero");
else
convertToWordsRecursive(num);
return 0;
}
Output: Five Zero Seven