題目要求:輸入一個整數(如 12345),從最高位開始逐位輸出(1 2 3 4 5)。最直觀的方法是將其作為字符串讀取,再逐字符打印。
#include <stdio.h>
int main() {
char s[1000000]; // 足夠大的緩衝區
gets(s); // 讀取整行(含空格),實際建議用 fgets
for (int i = 0; s[i] != '\0'; i++) {
printf("%c\n", s[i]);
}
return 0;
}
1e6 足以應對極長輸入。gets 已被 C11 棄用(無長度檢查),生產代碼請改用 fgets(s, sizeof(s), stdin) 並手動去換行符。// 先算位數,再從高位依次取出
int n; scanf("%d", &n);
int pow10 = 1;
while (n / pow10 >= 10) pow10 *= 10;
while (pow10) {
printf("%d ", n / pow10);
n %= pow10;
pow10 /= 10;
}
字符串法代碼更簡潔、通用性更強(支援超長整數、負號、前導零),推薦作為首選。