读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
总是提示我答案错误,我自己造了许多组样例数据都可以AC,大神看下代码片哪里有错。
#include <stdio.h>
#include <string.h>
#define N 1000
void itoa(int num,char a[])
{
int i=0,j=0,n=0;
char t;
while (num!=0)
{
a[i]=(char) (num%10)+'0';
num=num/10;
i++;
}
n=i;
i--;
while (j<i)
{
t=a[i];
a[i]=a[j];
a[j]=t;
j++;
i--;
}
}
int main()
{
int i,j,k,n;
long sum=0;
char str[N],str1[N];
memset(str,0,sizeof(str));
memset(str1,0,sizeof(str1));
scanf("%s",str);
for (j=0;j<strlen(str);j++)
{
sum+=str[j]-'0';
}
itoa(sum,str1);
for (i=0;i<strlen(str1);i++){
switch (str1[i]){
case '0':printf("ling ");break;
case '1':printf("yi ");break;
case '2':printf("er ");break;
case '3':printf("san ");break;
case '4':printf("si ");break;
case '5':printf("wu ");break;
case '6':printf("liu ");break;
case '7':printf("qi ");break;
case '8':printf("ba ");break;
case '9':printf("jiu ");break;}
}
printf("\b\t");
printf("\n");
return 0;
}