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

PAT 07-0 寫出這個數:數字和拼音轉換實現

     編輯:關於C語言

PAT 07-0 數字拼音輸出完整解析

本題要求讀取一個超長自然數(最多 10^100),計算其各位數字之和,並將和的每一位轉換為漢語拼音輸出,拼音間以單空格分隔,行末無多餘空格。

關鍵技術點

  1. 大數處理:輸入超出標準整型範圍,需按字符讀取並逐位累加
  2. 整數轉字符串:使用 sprintf() 而非非標準的 itoa(),符合 ANSI C 標準
  3. 拼音映射:建立數字到拼音的查找表

完整代碼實現

#include <stdio.h>
#include <string.h>

int main() {
    char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    char ch, s[3], *p = s;
    int sum = 0;

    // 逐字符讀取並累加
    while ((ch = getchar()) != '\n') {
        sum += ch - '0';
    }

    // 整數轉字符串
    sprintf(p, "%d", sum);
    int len = strlen(s);

    // 輸出拼音
    for (int i = 0; i < len; i++) {
        printf("%s", num[s[i] - '0']);
        if (i != len - 1) printf(" ");
        else printf("\n");
    }
    return 0;
}

樣例驗證

輸入:1234567890987654321123456789
輸出:yi san wu

解析:各位數字和為 135,拼音對應 "yi san wu"。

避坑指南

  • 輸入可能包含換行符,循環條件需正確判斷 ch != '\n'
  • sprintf 目標緩衝區需足夠大(此處和最大為 900,3 位字符足夠)
  • 輸出格式嚴格控制空格,最後一位後換行而非空格
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved