Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
C Program for Print individual digits as words without using if or switch.
In C programming, converting individual digits of a number to their corresponding words is commonly done using if-else or switch statements. However, we can achieve this more elegantly using an array of string pointers to map each digit (0-9) to its word representation.
Syntax
char *digitWords[] = {"ZERO", "ONE", "TWO", ..., "NINE"};
// Access digit word using: digitWords[digit]
Algorithm
START
Step 1 ? Declare int variables num, i and array of pointers char *alpha with values {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"}
Step 2 ? Read or assign the number to convert
Step 3 ? Extract each digit from the number (using modulo and division or string conversion)
Step 4 ? For each digit, print the corresponding word from the alpha array
Step 5 ? Continue until all digits are processed
STOP
Method 1: Using sprintf() for Digit Extraction
This approach converts the number to a string and then processes each character −
#include <stdio.h>
int main() {
int num = 900;
int i;
char *alpha[] = {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"};
char str[20];
printf("Number: %d<br>", num);
sprintf(str, "%d", num);
printf("In words: ");
for(i = 0; str[i] != '\0'; i++) {
printf("%s ", alpha[str[i] - '0']);
}
printf("<br>");
return 0;
}
Number: 900 In words: NINE ZERO ZERO
Method 2: Using Mathematical Approach
This method extracts digits using modulo and division operations −
#include <stdio.h>
void printDigitsAsWords(int num) {
char *words[] = {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"};
int digits[10], count = 0, i;
if (num == 0) {
printf("%s ", words[0]);
return;
}
while (num > 0) {
digits[count++] = num % 10;
num /= 10;
}
for (i = count - 1; i >= 0; i--) {
printf("%s ", words[digits[i]]);
}
}
int main() {
int number = 12045;
printf("Number: %d<br>", number);
printf("In words: ");
printDigitsAsWords(number);
printf("<br>");
return 0;
}
Number: 12045 In words: ONE TWO ZERO FOUR FIVE
Key Points
- The array index corresponds directly to the digit value (0-9).
- Method 1 is simpler but requires string conversion.
- Method 2 uses pure mathematical operations for digit extraction.
- Both methods avoid conditional statements like if-else or switch.
Conclusion
Using an array of string pointers provides an elegant solution to convert digits to words without conditional statements. The approach leverages array indexing to map digits directly to their word representations, making the code clean and efficient.
Advertisements
