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

C語言輸出整數每一位數字:三種方法(陣列、逆序、遞迴)完整比較

     編輯:關於C

方法一:陣列儲存再逆序輸出

void print_digits_array(int num) {
    int arr[10], idx = 0;
    if (num == 0) { putchar('0'); return; }
    while (num) {
        arr[idx++] = num % 10; // 取個位
        num /= 10;
    }
    for (int i = idx-1; i >= 0; i--) // 逆序輸出
        printf("%d ", arr[i]);
}

方法二:遞迴分解(最簡潔)

void print_digits_rec(int num) {
    if (num >= 10) print_digits_rec(num / 10);
    printf("%d ", num % 10);
}

遞迴先處理高位,返回時列印低位,自然實現正序輸出。注意:負數需預處理。

方法三:計算位數後逐位取出(無陣列、無遞迴)

void print_digits_math(int num) {
    if (num == 0) { putchar('0'); return; }
    int div = 1;
    while (num / div >= 10) div *= 10; // 找最高位權重
    while (div) {
        printf("%d ", num / div);
        num %= div;
        div /= 10;
    }
}

完整測試程式

#include 

void method1(int n) { /* 陣列法 */ }
void method2(int n) { /* 遞迴法 */ }
void method3(int n) { /* 數學法 */ }

int main() {
    int num;
    printf("Enter integer: ");
    scanf("%d", &num);
    printf("Method1: "); method1(num); puts("");
    printf("Method2: "); method2(num); puts("");
    printf("Method3: "); method3(num); puts("");
    return 0;
}

比較總結

方法空間時間優點缺點
陣列+逆序O(log n)O(log n)直觀、易修改輸出格式需額外陣列
遞迴O(log n) 堆疊O(log n)程式碼最短、邏輯清晰堆疊溢位風險(極大數)
數學權重法O(1)O(log n)無額外空間、無遞迴需計算最高位權重

總結

輸出整數每一位是基礎指標/算術練習。**遞迴法最適合教學展示**,**數學法最適合嵌入式/受限環境**,**陣列法適合需後續處理位數陣列的場景**。

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