c语言编写数字转换单词
时间: 2023-10-21 12:07:00 浏览: 245
C语言入门习题:数字转换单词
5星 · 资源好评率100%
以下是一个简单的 C 语言程序,可以将输入的数字转换成相应的英文单词:
```c
#include <stdio.h>
void convert_to_words(char *num)
{
int len = strlen(num);
if (len == 0) {
printf("empty string\n");
return;
}
char *single_digits[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
char *two_digits[] = {"", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
char *tens_power[] = {"hundred", "thousand"};
printf("\n%s: ", num);
if (len == 1) {
printf("%s\n", single_digits[*num - '0']);
return;
}
while (*num != '\0') {
if (len >= 3) {
if (*num - '0' != 0) {
printf("%s ", single_digits[*num - '0']);
printf("%s ", tens_power[len-3]);
}
--len;
} else {
if (*num == '1') {
int sum = *num - '0' + *(num + 1)- '0';
printf("%s\n", two_digits[sum]);
return;
} else if (*num == '2' && *(num + 1) == '0') {
printf("twenty\n");
return;
} else {
int i = *num - '0';
printf("%s ", i ? tens_multiple[i] : "");
++num;
if (*num != '0')
printf("%s ", single_digits[*num - '0']);
}
--len;
}
++num;
}
}
int main()
{
char num[10];
printf("Enter a number: ");
scanf("%s", num);
convert_to_words(num);
return 0;
}
```
这个程序使用了一些数组,每个数组都存储了数字和单词之间的映射关系。在 `convert_to_words` 函数中,我们首先计算数字的长度,然后根据位数将数字分成三个部分:百位、十位和个位。然后,我们使用数组将每个数字转换为单词,并将它们连接起来形成最终的输出。
阅读全文