PAT 乙級 1002 寫出這個數
阿新 • • 發佈:2019-01-01
1002 寫出這個數 (20 point(s))
讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:
每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10100。
輸出格式:
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
經驗總結:
emmmmm 就是先用字元陣列儲存,然後將每一位數加起來得到結果,最後處理的時候,可以利用整除法計算出數字的位數,然後再從高位到低位依次去整輸出,(能用這種方法的原因是100位就算全是9加起來也就900,10的3次方而已,不會超限)注意末尾沒有空格哦,其他的就沒啥啦~
AC程式碼
#include <cstdio> #include <cmath> int process(char a[]) { int result=0; for(int i=0;a[i]!='\0';++i) { result+=a[i]-'0'; } return result; } int main() { char num[110]; char arti[10][6]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; scanf("%s",num); int res=process(num); int count=0; int temp=res; while(temp!=0) { temp/=10; ++count; } int pro; do { pro=pow(10.0,count-1); printf("%s",arti[res/pro]); if(count>1) printf(" "); else printf("\n"); res%=pro; --count; }while(count>0); return 0; }