首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

PAT 乙級 1002:寫出這個數 — 數位和轉漢語拼音輸出

     編輯:關於C語言

題目大意

讀入超大自然數 n (n < 10^100),計算各位數字之和,將和的每一位用漢語拼音輸出,拼音間單空格分隔,行末無空格。

解題關鍵

  1. 超大數處理:以字串讀入,逐字元累加數位和(int 足夠,最大 9*100=900)。
  2. 數位分解:將總和轉為字串,逐字元對照拼音表輸出。
  3. 格式控制:最後一個拼音後不輸出空格。

完整 C 語言實現

#include 
#include 

void print_pinyin(int num) {
    char buf[12];
    sprintf(buf, "%d", num);  // 數值轉字串
    const char *pinyin[10] = {
        "ling", "yi", "er", "san", "si",
        "wu", "liu", "qi", "ba", "jiu"
    };
    for (int i = 0; buf[i]; i++) {
        if (i) putchar(' ');
        printf("%s", pinyin[buf[i] - '0']);
    }
    putchar('\n');
}

int main() {
    char n[101];
    scanf("%100s", n);
    int sum = 0;
    for (int i = 0; n[i]; i++) sum += n[i] - '0';
    print_pinyin(sum);
    return 0;
}

測試樣例

輸入:1234567890987654321123456789
數位和:1+2+...+9 = 135
輸出:yi san wu

常見錯誤

  • 用 %lld 讀入導致溢位(10^100 遠超 2^63-1)。
  • 拼音陣列索引錯誤('0'=48 需減 '0')。
  • 行末多餘空格導致格式錯誤(OJ 嚴格比對)。

總結

經典「大數字串處理 + 簡單映射」題目,核心考察字串讀取、字元轉數值、格式化輸出控制三項基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved