1. 程式人生 > >pat乙級真題1002_寫出這個數

pat乙級真題1002_寫出這個數

題目:讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

輸入格式:

每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10​100​​。

輸出格式:

在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空格。

輸入樣例:

1234567890987654321123456789

輸出樣例 :

yi san wu

當輸入的數大於int的儲存範圍時,要用char進行儲存

程式碼:

#include <iostream>
#include <string>
#include <string.h>  
using namespace std;
int main(int argc, const char * argv[]) {
    char a[10000];
    cin >> a;
    char b[10000];
    int sum = 0;
    int length_a = strlen(a);
    for(int i=0;i<length_a;i++){
        a[i]=a[i]-'0';
        sum=sum+a[i];  
    }
    for(int i=0;sum!=0;i++){
        b[i]=sum%10;    
        sum=sum/10;
    }
    int length_b = strlen(b);
    for(int i=length_b-1;i>=0;i--){
        switch(b[i]){
            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(i>0)
            cout<<" ";
    }
    return 0;
}

19分,還1分不知道扣在哪。

測試點 結果 耗時 記憶體
0 答案正確 3 ms 512KB
1 答案錯誤 3 ms 512KB
2 答案正確 2 ms 384KB
3 答案正確 3 ms 384KB
4 答案正確 3 ms 384KB
5 答案正確 2 ms 512KB