读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
样例:">输入样例:
1234567890987654321123456789
输出样例:
yi san wu
代码如下(测试点2错误,原因不明,求指点迷津)
#include <stdio.h>
int main()
{
char inputnum[101]= {0};
int eachnum[101] = {0};
int sum = 0, temp, reverse = 0;
char *pinyin[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
while(scanf("%s", inputnum) != EOF)
{
for(int i=0;i<=100;i++) //求每位数之和
{
if(inputnum[i] == 0)
{
eachnum[i] = 0;
}
else
{
eachnum[i] = inputnum[i] - '0';
}
sum +=eachnum[i];
}
if(sum == 0)
{
printf("%s",pinyin[sum]);
break;
}
//从个位开始输出将会倒叙排列,故用sum的逆序数输出
while(sum) //求和结果的逆序数
{
temp = sum%10;
reverse=reverse*10+temp;
sum /= 10;
}
while(reverse) //用逆序数逐个输出每一位的拼音
{
temp = reverse % 10;
printf("%s", pinyin[temp]);
reverse /= 10;
if(reverse != 0)
{
printf(" ");
}
}
}
return 0;
}