读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
#include<stdio.h>
#include<string.h>
int main (){
int i=0 ,j=0,sum=0;
int num[20]; //储存最后和 //定义字符串必须用char类型
char str[1001]; //储存输入的字符串
gets(str);
while(str[i]!='\0'){
sum+=str[i]-48; //加的是数值 必须减去ascll码的差值
i++;
}
while (sum!=0){ //将整数转化为数组
num[j]=sum%10;
sum=sum/10;
j++;
}
for(i=j;i>=0;i--){ //倒序输出
switch(num[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;
}
// 将整数转化为数组这个代码要自己编,不能使用函数,提交无法识别(******敲黑板*******)
//错误一: 定义字符串错误。定义字符串是用成int类型,应该用char定义字符串 。
//错误二: 累加求和错误。累加过程中成了字符累加(Ascll码值),应减去相应的差值 (应做数字累加)。
//错误三: switch语句错误。switch 选择字符串中数值时必须加单引,选择数字时不加单引号。
//错误四: 输出首字符显示空格。 我也不知道为啥错误,但是活人别被尿憋死。
// 终于通过了 ,他娘的我真是个人才!!!