还是自己太菜了,只能用笨方法求解,过程曲折,有个问题一直不明白,在这里记录下来,以便以后翻看。
int main()
{
int N;
int arr[100]; //此处当定义为 int arr[] = {0};时就会是程序的输出结果变为:ling si;(此时输入为:1234)难以理解,还是需要查看一下相关的定义。也就是不规定数组大小时,输出结果就是错误的。
int i=0;
scanf("%d",&N);
if(N < 0){ // 如果为负数 就先打印fu,然后变成正数;
printf("fu ");
N = -N;
}
if(N == 0) //如果为0,直接打印0;
{
printf("ling");
}
while(N){ //用取余数的方法求出每一位然后放到数组中(注意此时是将N倒序放到数组中);
arr[i] = N % 10;
N = N / 10;
i++;
}
for(int j=i-1;j >= 0;j--)// 循环中用switch判断每一位的输出,此时输出正好就是将原来的倒序输入变为正序输出,很方便。
{
switch(arr[j])
{
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(j != 0)
printf(" "); // 每输出一次就打印一个空格,知道最后一位输出不打印空格。
}
printf("\n");//最后的换行,可有可无。
return 0;
}
代码还有许多可以优化的地方,使其更加美观。。
原文地址:https://www.cnblogs.com/yinanweike/p/10705209.html