1002 写出这个数 (20 分)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
代码部分
#include<stdio.h>
#include<string.h>
int main()
{
int a[3],i,j=0,sum=0;//a数组用来存和的每一位数字
char n[101];
gets(n);
for(i=0;i<strlen(n);i++)
sum=sum+n[i]-'0';//每一位读出来并且累加。-'0'是将字符型数字转为整型。
while(sum!=0)
{
a[j++]=sum%10;
sum=sum/10;
}
for(i=j-1;i>=0;i--)
{
switch(a[i])
{
case 0:printf("ling");if(i!=0) printf(" ");break;
case 1:printf("yi");if(i!=0) printf(" ");break;
case 2:printf("er");if(i!=0) printf(" ");break;
case 3:printf("san");if(i!=0) printf(" ");break;
case 4:printf("si");if(i!=0) printf(" ");break;
case 5:printf("wu");if(i!=0) printf(" ");break;
case 6:printf("liu");if(i!=0) printf(" ");break;
case 7:printf("qi");if(i!=0) printf(" ");break;
case 8:printf("ba");if(i!=0) printf(" ");break;
case 9:printf("jiu");if(i!=0) printf(" ");break;
}
}
return 0;
}
运行结果
个人体会
这题思路就是先输入这串数字,然后遍历累加求出和。再对和进行遍历输出每一位数字,之后使用一个switch语句,输出对应的拼音。