用c写一个翻译数字0到十万亿成英语的代码
时间: 2024-05-07 16:17:22 浏览: 13
下面是一个用 C 语言实现翻译数字的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *less_than_20[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
char *tens[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
char *thousands[] = {"", "thousand", "million", "billion", "trillion"};
void translate(unsigned int number, char *result) {
int divisions[] = {1000000000, 1000000, 1000, 1};
int i;
*result = '\0';
if (number == 0) {
strcat(result, less_than_20[0]);
return;
}
for (i = 0; i < 4; ++i) {
int current = number / divisions[i];
if (current != 0) {
translate(current, result);
strcat(result, thousands[i]);
if (number % divisions[i] != 0) {
strcat(result, " ");
translate(number % divisions[i], result);
}
return;
}
}
if (number < 20) {
strcat(result, less_than_20[number]);
} else if (number < 100) {
strcat(result, tens[number / 10]);
if (number % 10 != 0) {
strcat(result, " ");
translate(number % 10, result);
}
} else if (number < 1000) {
strcat(result, less_than_20[number / 100]);
strcat(result, " hundred");
if (number % 100 != 0) {
strcat(result, " and ");
translate(number % 100, result);
}
}
}
int main() {
unsigned int number;
char result[1000];
printf("请输入数字: ");
scanf("%u", &number);
translate(number, result);
printf("%s\n", result);
return 0;
}
```
这段代码可以将输入的数字翻译成英语,例如输入12345,输出 twelve thousand three hundred and forty five。