讀入超大自然數 n (n < 10^100),計算各位數字之和,將和的每一位用漢語拼音輸出,拼音間單空格分隔,行末無空格。
int 足夠,最大 9*100=900)。#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')。經典「大數字串處理 + 簡單映射」題目,核心考察字串讀取、字元轉數值、格式化輸出控制三項基本功。