C語言整數逆序輸出

2020-07-16 10:04:28
將一個從鍵盤輸入的整數存放到一個陣列中,通過程式的執行按照陣列中的逆序輸出該整數,利用遞迴的方法解決問題。

演算法思想

設計函數實現資料的逆序存放,設定形引數組接收實引數組的地址,來儲存資料的每一位。函數體採用遞迴的方式解決問題,因此考慮遞回進行的條件。例如,把資料 n 存放到陣列 s 中,若 n 是一位數,則存放 n 到陣列中;若 n 不是一位數,則存放 n/10 到陣列中。

問題解決的難點在於找到資料的存放地址,通過不斷地取餘和整除 10 來得到資料的每一位。為了實現資料的逆序存放,每一次整除 10 的時候,同時把存放資料的陣列地址後移,這樣得到的第一位數存放在陣列的最後一位……通過依次前移,即遞回的回歸,實現整個資料的存放。通過函數 convert() 實現字串中的數位的逆序轉換。

程式程式碼

#include <stdio.h>
int convert(char s[],int n)
{
    int i;
    if((i=n/10)!=0)
         convert(s+1,i);
    *s=n%10+'0';
    return 0;
}

int main()
{
    int num;
    char str[10]=" ";
    printf("input integer data:");
    scanf("%d",&num);
    convert(str,num);
    printf("output string:n");
    puts(str);
    return 0;
}

偵錯執行結果

當輸入整數為 123456789 時,其程式執行結果如下所示:

input integer data:123456789
output string:
987654321

當輸入整數為 654321789 時,逆序轉換輸出結果如下所示:

input integer data:654321789
output string:
987123456

總結

陣列名代表陣列中第一個元素的地址,陣列的地址就是陣列的指標,每個元素的地址就是每個元素的指標。陣列元素在記憶體中是連續存放的,相對於普通變數,用指標指向資料元素操作更簡便。

一維陣列的陣列名代表了陣列的首地址,即陣列的指標,但陣列名是常數指標,其值是不可改變的,可以定義一個指標變數指向陣列名。當定義了指標後,對於陣列元素的參照既可以使用下標,又可以使用指標。