輸入 ≤ 5 位正整數,完成:
1. 判斷位數。
2. 正序輸出每位數字。
3. 逆序輸出各位數字。
if-else 硬編碼 1~5 位,冗長且易錯。s,i,j,k,z,y),邏輯難追蹤。#include <stdio.h>
#include <string.h>
int main() {
char s[12];
scanf("%11s", s); // 讀字串,自動處理任意長度
int len = strlen(s);
printf("位數: %d\n", len);
printf("正序: ");
for (int i = 0; i < len; i++) printf("%c ", s[i]);
printf("\n逆序: ");
for (int i = len - 1; i >= 0; i--) printf("%c ", s[i]);
return 0;
}
#include <stdio.h>
void printDigits(int n) {
if (n == 0) return;
printDigits(n / 10);
printf("%d ", n % 10); // 遞歸回溯實現正序
}
int main() {
int x;
scanf("%d", &x);
if (x <= 0) return 0;
int len = 0, tmp = x;
while (tmp) { len++; tmp /= 10; }
printf("位數: %d\n", len);
printf("正序: "); printDigits(x); printf("\n");
printf("逆序: ");
tmp = x;
while (tmp) { printf("%d ", tmp % 10); tmp /= 10; }
return 0;
}
tmp、len 變化。123、1002、0 覆蓋邊界。拒絕硬編碼 if-else 堆疊,**字串或遞歸** 才是處理「位數不定」的正規軍姿勢!