用c语言递归 整数转换英文表示
时间: 2023-07-27 12:12:26 浏览: 98
C语言之整数划分问题(递归法)实例代码
以下是一个用 C 语言递归实现的整数转换英文表示的函数:
```c
#include <stdio.h>
void convert(int n);
int main()
{
int n;
printf("请输入一个整数:");
scanf("%d", &n);
convert(n);
return 0;
}
void convert(int n)
{
if (n < 0)
{
printf("负");
convert(-n);
}
else if (n >= 1000000)
{
convert(n / 1000000);
printf("million ");
convert(n % 1000000);
}
else if (n >= 1000)
{
convert(n / 1000);
printf("thousand ");
convert(n % 1000);
}
else if (n >= 100)
{
convert(n / 100);
printf("hundred ");
convert(n % 100);
}
else if (n >= 20)
{
switch (n / 10)
{
case 2: printf("twenty "); break;
case 3: printf("thirty "); break;
case 4: printf("forty "); break;
case 5: printf("fifty "); break;
case 6: printf("sixty "); break;
case 7: printf("seventy "); break;
case 8: printf("eighty "); break;
case 9: printf("ninety "); break;
}
convert(n % 10);
}
else
{
switch (n)
{
case 0: printf("zero"); break;
case 1: printf("one"); break;
case 2: printf("two"); break;
case 3: printf("three"); break;
case 4: printf("four"); break;
case 5: printf("five"); break;
case 6: printf("six"); break;
case 7: printf("seven"); break;
case 8: printf("eight"); break;
case 9: printf("nine"); break;
case 10: printf("ten"); break;
case 11: printf("eleven"); break;
case 12: printf("twelve"); break;
case 13: printf("thirteen"); break;
case 14: printf("fourteen"); break;
case 15: printf("fifteen"); break;
case 16: printf("sixteen"); break;
case 17: printf("seventeen"); break;
case 18: printf("eighteen"); break;
case 19: printf("nineteen"); break;
}
}
}
```
该函数的基本思路是,根据数字的大小递归地进行转换。如果数字小于 0,则先输出 "负",然后将数字取反再进行转换。如果数字大于等于 1000000,则先转换它的百万位,然后输出 "million",再转换它的其他位。如果数字大于等于 1000,则先转换它的千位,然后输出 "thousand",再转换它的其他位。如果数字大于等于 100,则先转换它的百位,然后输出 "hundred",再转换它的其他位。如果数字大于等于 20,则根据它的十位输出对应的英文单词,然后再转换它的个位。如果数字小于 20,则根据它本身输出对应的英文单词。
阅读全文