题目要求:
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
分析:输入的数字长度明显长于int,long long int所能定义的长度,所以采用字符读入,用ASCⅡ码转换成数字加和存储起来。
再将其倒置进入数组中,使用switch语句进行拼音的输出。
(本人也是刚开始练习,如有问题,请多指教,欢迎评论交流)
代码:
#include <stdio.h>
int main()
{
char ch;
int sum=0;
while((ch=getchar())!='\n')
sum+=(ch-'0');
int i=0;
int temp=sum;
while(temp!=0){
temp=temp/10;
i++;
}
int a[i];
int n=i;
int z=sum;
temp=i;
for(i=n-1;i>=0;i--){
a[i]=z%10;
z/=10;
}
for(i=0;i<temp;i++){
switch(a[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<temp-1){
printf(" ");
}
}
return 0;
}