PTA L1-007 念數字 (10分)


還是自己太菜了,只能用笨方法求解,過程曲折,有個問題一直不明白,在這里記錄下來,以便以后翻看。

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;

}

代碼還有許多可以優化的地方,使其更加美觀。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM