描述
小凡的老师给了小凡一个任务就是做一个中文的计算器。比如说输入“十加十”,那么小凡就要得到 20 这个值,但是小凡太笨怎么都搞不定,所以老师给他降低了要求,让他只要把阿拉伯数字转换成中文就行了,还说如果他连这个都不会就不给他及格了。小凡都快哭了,好心的你帮帮他吧。
输入
有多组测试数据,请用while(…)读入数据,直到EOF。
每组数据为一串数字,如:2358、2989、51(不超过9999)。
输出
每个输入对应一个输出。对应上面的输出分别为二千三百五十八、两千九百八十九、五十一。
输入样例 1
36
211
2126
10
20
101
输出样例 1
三十六
二百一十一
二千一百二十六
十
二十
一百零一
#include<stdio.h>
int change(int n){
char c[11][20] = {"零","一","二","三","四","五","六","七","八","九"};
int i=0,j,k,p,m,count=0;
int a[10000];
if(n==0) printf("零");
if(n==10) printf("十");
m = n;
while(n>0 && m!=10){
a[i] = n%10;
if(a[i]==0){
count++;
}
i++;
n /= 10;
}
for(j=i-1;j>=0;j--){
p=j-1;
printf("%s",c[a[j]]);
if(j==1){
printf("十");
if(a[p]==0){
break;
}
}
else if(j==2){
printf("百");
if(count==2){
break;
}
else if(count==1 && a[j-1]==0){
printf("零%s",c[a[j-2]]);
break;
}
}
else if(j==3){
printf("千");
if(count==3){
break;
}
else if(count==2 && a[j-3]!=0){
printf("零%s",c[a[j-3]]);
break;
}
else if(count==2 && a[j-2]!=0){
printf("零%s十",c[a[j-2]]);
break;
}
else if(count==1 && a[j-1]==0){
printf("零%s十%s",c[a[j-2]],c[a[j-3]]);
break;
}
}
}
printf("\n");
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
change(n);
}
}