蠢蠢的我
运算结果出错....跟着算法走一遍.....
题目 :读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
第一:在不知道位数的情况下 利用 if 判断for循环终止条件 来求sum
或者 定义一个数组 利用 n=-1 \ n++ \b[n] 来记录每一个位数
也可以先求n的位数 利用 for循环 每一循环 n/10 count++ 利用if来判断终止以求得位数count(但没必要)
第二 得到sum(135)后 求出sum的每个数字
利用switch语句 若case=1 则输出 yi
第三 利用for 和 if 满足输出格式
# include<stdio.h>
int main()
{
int n,i,j,chu,yu,t=1,sum=0,a[200];
scanf("%d",&n);
for( ;1;)
{
chu = n / t;
t = t * 10;
yu = n % 10 ;
sum = sum + yu;
if(yu == 0)
break;
}
t=1;
for(;1;)
{
chu = sum /t ;
t = t * 10;
yu= sum % 10;
i=0;
a[i]=yu;
i++;
if(yu == 0)
break;
}
t=0;
for(j=1;j<=i;j++)
{
t=t+1;
if(j != i)
{
switch(a[i-t])
{
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;
}
}
else
{
switch(a[i-t])
{
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;
}
}
}
return 0;
}