PAT乙級練習題 1002 寫出這個數
阿新 • • 發佈:2018-12-18
1.問題描述
讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:
每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10^100。
輸出格式:
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
2.解題思路
1.因為正整數 n 小於 10^100,遠超出整形資料的範圍,定義一個字元陣列c[MAX] (MAX >100)來儲存 n;
2.用整型變數 s 來累計 n 的各位數字之和;
3.將 數 s 的各位數字放入 一個整型陣列 num[10] 中;
4.用 switch 語句將 num[10] 中的各個數字用拼音輸出。
3.程式碼實現
#include<iostream> using namespace std; #define MAX 120 int main() { char c[MAX]; int num[10]; int i,j = 0,s = 0; cin>>c; for(i = 0;c[i] != '\0';i++) s += (c[i]-'0'); //求 n 的各位數字之和 while(s) { num[j++] = s%10; //將 s 的各位數字放入陣列num中 s /= 10; } for(j -= 1;j >= 0;j--) //將num中的各數字轉換成拼音輸出 { switch(num[j]) { case 0:cout<<"ling";break; case 1:cout<<"yi";break; case 2:cout<<"er";break; case 3:cout<<"san";break; case 4:cout<<"si";break; case 5:cout<<"wu";break; case 6:cout<<"liu";break; case 7:cout<<"qi";break; case 8:cout<<"ba";break; case 9:cout<<"jiu";break; } if(j != 0) cout<<" "; } return 0; }