還是自己太菜了,只能用笨方法求解,過程曲折,有個問題一直不明白,在這里記錄下來,以便以后翻看。
include <stdio.h>
include <stdlib.h>
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;
}
代碼還有許多可以優化的地方,使其更加美觀。。