http://acm.nyist.net/JudgeOnline/problem.php?pid=1104
就我不坑
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
as we all know ,就我不坑,呵呵,当然,这次我还是不坑,我只让你帮我翻译一下数字即可。
所谓翻译,就是将一个数字用中文读出来,很简单吧,快快AC吧。
数字的中文表示分别为:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿.
-
输入
- int 范围内,保证没错,EOF。 输出
- 用我给你的中文写出来就好了 样例输入
-
10 1052 10000
样例输出
-
壹拾 壹仟零伍拾贰 壹万
#include<stdio.h>
#include<string.h>
#define MAX 100
char s[MAX];
void change()
{
int n,i,j;
while(s[0]=='0')
{
n=strlen(s);
for(i=1;i<n;i++)
s[i-1]=s[i];
s[n-1]='\0';
}
n=strlen(s);
char c[MAX];
for(i=n-1,j=0;i>=0;i--)
c[j++]=s[i];
c[j]='\0';
memset(s,'\0',sizeof(s));
strcpy(s,c);
}
int main()
{
char a[MAX][10]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
int n,i,j,k,H,L,judge;
while(scanf("%s",&s)!=EOF)
{
change();//将前导零去掉,并倒置
n=strlen(s);
if(n==0)//当输入为零时
{
printf("零\n");
continue;
}
for(i=0,judge=0;i<n;i++)//要输出其中几个”万“,”亿“,”亿亿“,”亿亿亿“,”亿亿亿亿“
if(s[i]!='0') judge+=1;
for(i=n-1,H=i,L=i;i>=0;i--)
{
if(s[i]=='0'&&i%4!=0)
continue;
else
L=i;
if(H>L&&H!=L+1&&s[L]!='0') printf("%s",a[0]);
if(s[i]!='0') printf("%s",a[s[i]-'0']);
if(i%4==3) printf("仟");
else if(i%4==2) printf("佰");
else if(i%4==1) printf("拾");
else if(i%4==0&&judge!=0)
{
if(i/4==1) printf("万");
else if(i/4==2) printf("亿");
else if(i/4==3) printf("亿亿");
else if(i/4==4) printf("亿亿亿");
else if(i/4==5) printf("亿亿亿亿");
judge-=1;
}
H=L;
}
printf("\n");
}
return 0;
}