1002 写出这个数 (20 分)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10^100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
由于n的大小,所以本题使用数组存放n,n的每一位都按顺序存放在数组,把每一位进行累加得到和sum,再把sum的每一位求出来再进行拼音输出
#include <stdio.h>
#define N 100
int main(void)
{
char num[N];
int temp[5];
int i,j=0,sum=0;
scanf("%s",num);
for(i=0;i<5;i++)
temp[i]=-1;
for(i=0;num[i]!='\0';i++)
{
switch(num[i])
{
case '0':sum+=0;break;
case '1':sum+=1;break;
case '2':sum+=2;break;
case '3':sum+=3;break;
case '4':sum+=4;break;
case '5':sum+=5;break;
case '6':sum+=6;break;
case '7':sum+=7;break;
case '8':sum+=8;break;
case '9':sum+=9;break;
}
}
while(sum!=0)
{
temp[j]=sum%10;
j++;
sum=sum/10;
}
for(i=4;i>=0;i--)
{
if(temp[i]!=-1)
{
switch(temp[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;
}
if(i!=0&&temp[i]!=-1)
printf(" ");
}
return 0;
}