您的位置:首页 > 其它

数学趣题——数字翻译器

2010-05-26 10:42 274 查看
问题:输入一个正整数N,输出英文表达。例如:1对应one

源码:

#include <stdio.h>
char data_1[19][11] ={"one", "two", "three", "four",
"five", "six", "seven", "eight",
"nine", "ten", "eleven", "twelve",
"thirteen", "forteen", "fifteen", "sixteen",
"seventeen", "eighteen", "ninteen"
};
char data_2[8][8] ={"twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninty"
};
void translation_A(long N);
void translation_B(long a);
void translation_C(long b);
void translation_A(long N)
{ /*翻译千位数*/
 long a;
 if(N == 0){
 printf("Zero\n");
 return;
}
 a = N / 1000;
 if(a != 0){
 translation_B(a);
 printf("thousand ");
}
 a = N % 1000;
 if(a != 0)
 translation_B(a);
}
void translation_B(long a)
{ /*翻译百位数*/
 long b;
 b = a / 100;
 if(b != 0){
 translation_C(b);
 printf("hundred ");
}
 b = a % 100;
 if(b != 0)
 translation_C(b);
}
void translation_C(long b)
{ /*翻译十位数和个位数*/
 long c;
 if(b <= 19)
 printf("%s ", data_1[b-1]);
 else
{
 c = b / 10;
 printf("%s ", data_2[c-2]);
 c = b % 10;
 if(c != 0)
 printf("%s ", data_1[c-1]);
}
}
int main()
{
 long N;
 printf("Please input a longeger from 0~999999\n");
 scanf("%ld", &N);
 translation_A(N);
 return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: