將一個從鍵盤輸入的整數存放到一個數組中,通過程序的運行按照數組中的逆序輸出該整數,利用遞歸的方法解決問題。
算法思想
設計函數實現數據的逆序存放,設定形參數組接收實參數組的地址,來存儲數據的每一位。
函數體采用遞歸的方式解決問題,因此考慮遞歸進行的條件。
例如,把數據 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
總結
數組名代表數組中第一個元素的地址,數組的地址就是數組的指針,每個元素的地址就是每個元素的指針。
數組元素在內存中是連續存放的,相對於普通變量,用指針指向數據元素操作更簡便。
一維數組的數組名代表了數組的首地址,即數組的指針,但數組名是常量指針,其值是不可改變的,可以定義一個指針變量指向數組名。當定義了指針后,對於數組元素的引用既可以使用下標,又可以使用指針。

不管你是轉行也好,初學也罷,進階也可,如果你想學編程,進階程序員~
【值得關注】我的 編程學習交流俱樂部!【點擊進入】
全棧程序員正在等你加入~
