1002. 写出这个数
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789
输出样例:
yi san wu
代码C(gcc 4.7.2):测试可以ac
#include<stdio.h>
#define M 101
int main()
{
int i=0,sum=0; int j=0;
int b[M];
char pinyin[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//以二维数组存入拼音,十个拼音,每一个长度不大于5
char a[M];
scanf("%s",&a);
//将数字以asc码的形式存进数组,减去‘0’就是本身的数值
while(a[i]!='\0')//字符串以\0结尾
{
a[i]=a[i]-'0';
sum=sum+a[i];
i++;
}
//printf("sum=%d\n",sum);
while(sum>0)//将得到的sum的每一位数字存到b数组,顺序为个,十,百,千...
{
b[j]=sum%10;
sum=sum/10;
j++;//j是为了记录有多少位
}
j=j-1;//最后一次循环的时候j多加了一次,所以要减掉
while(j>0)
{
printf("%s ",pinyin[b[j]]);//中间的每位都要用空格间隔
j--;
}
printf("%s",pinyin[b[0]]);//最后一位不能输出空格
}