1.题目描述
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output “Fu” first if it is negative. For example, -123456789 is read as “Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu”. Note: zero (“ling”) must be handled correctly according to the Chinese tradition. For example, 100800 is “yi Shi Wan ling ba Bai”. 给定一个不超过9位数的整数,你应该用传统的中文方式阅读它。如果是负值的话输出“Fu”。例如,-123456789被解读为“Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu”。注:零(“ling”)必须按照中国传统正确处理。例如,100800是“yi Shi Wan ling ba Bai”。
2.输入描述:
Each input file contains one test case, which gives an integer with no more than 9 digits. 每个输入文件包含一个测试用例,它给出的整数不超过9位数。
3.输出描述:
For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line. 对于每个测试用例,用一行打印中文读取数字的方式。字符用空格分隔,行尾不能有额外的空格。
4.输入例子:
-123456789
5.输出例子:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
6.源代码:
#include<stdio.h>
#include<string.h>
int main()
{
char num
[11]="\0",str
[100]="\0";
scanf("%s",&num
);
int i
=0,len
=strlen(num
);
if(num
[0]=='-')
{
i
=1;
len
--;
strcat(str
,"Fu ");
}
if(strcmp(num
,"0")==0)
strcat(str
,"ling ");
while(len
)
{
switch(num
[i
])
{
case '0':
if(num
[i
+1]!='0'&&len
%4!=1)
strcat(str
,"ling ");
break;
case '1':strcat(str
,"yi ");break;
case '2':strcat(str
,"er ");break;
case '3':strcat(str
,"san ");break;
case '4':strcat(str
,"si ");break;
case '5':strcat(str
,"wu ");break;
case '6':strcat(str
,"liu ");break;
case '7':strcat(str
,"qi ");break;
case '8':strcat(str
,"ba ");break;
case '9':strcat(str
,"jiu ");break;
default:break;
}
if(num
[i
]!='0')
{
switch(len
%4)
{
case 2:strcat(str
,"Shi ");break;
case 3:strcat(str
,"Bai ");break;
case 0:strcat(str
,"Qian ");break;
default:break;
}
}
if(len
/4==2&&len
%4==1)
strcat(str
,"Yi ");
else
{
if(len
/4==1&&len
%4==1)
{
if(num
[i
]!='0'||num
[i
-1]!='0'||num
[i
-2]!='0'||num
[i
-3]!='0')
strcat(str
,"Wan ");
else
if(num
[i
+1]!='0')
strcat(str
,"ling ");
}
}
len
--;
i
++;
}
len
=strlen(str
);
for(i
=0;i
<len
-1;i
++)
printf("%c",str
[i
]);
return 0;
}