C語言整數逆序輸出
將一個從鍵盤輸入的整數存放到一個數組中,通過程序的運行按照數組中的逆序輸出該整數,利用遞歸的方法解決問題。
算法思想
設計函數實現數據的逆序存放,設定形參數組接收實參數組的地址,來存儲數據的每一位。函數體采用遞歸的方式解決問題,因此考慮遞歸進行的條件。例如,把數據 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
總結
數組名代表數組中第一個元素的地址,數組的地址就是數組的指針,每個元素的地址就是每個元素的指針。數組元素在內存中是連續存放的,相對于普通變量,用指針指向數據元素操作更簡便。
一維數組的數組名代表了數組的首地址,即數組的指針,但數組名是常量指針,其值是不可改變的,可以定義一個指針變量指向數組名。當定義了指針后,對于數組元素的引用既可以使用下標,又可以使用指針。
- C語言三色旗問題
- 有一根繩子,上面有紅、白、藍三種顏色的旗子。
- 03-10 關注:0
- C語言整數逆序輸出
- 將一個從鍵盤輸入的整數存放到一個數組中,通過程序的運行按照數組中的逆序輸出該整數,利用遞歸的方法解決問題。
- 03-10 關注:0
- C語言約瑟夫環問題
- 編號為 1,2,3,…,n 的 n 個人圍坐一圈,任選一個正整數 m 作為報數上限值,從第一個人開始按順時針方向報數,報數到 m 時停止,報
- 03-10 關注:0
- C語言輸出等腰三角形
- 本實例要求從鍵盤輸入任意整數 n,通過程序運行輸出對應高度為 n 的等腰三角形。
- 03-10 關注:0
- C語言字符串加密和解密算法
- 在本實例中要求設計一個加密和解密算法。在對一個指定的字符串加密之后,利用解密函數能夠對密文解密,顯示明文信息。
- 03-09 關注:3
- C語言統計單詞個數,單詞個數算法
- 在實際生活中經常會遇到一個問題:寫英語作文時,常常要求滿足一定的字數。在以往,要么我們一個一個地數;要么我們估算一行的單詞數,
- 03-09 關注:3
- C語言獲取矩陣的最大值及其下標
- 本實例要求使用二維數組將一個 3×4 的矩陣中所有元素的最大值及其下標獲取,通過該程序,掌握二維數組的引用知識。
- 03-09 關注:4
- C語言誰家孩子跑得最慢
- 張、王、李三家各有三個小孩。一天,三家的九個孩子在一起比賽短跑,規定不分年齡大小,跑第一得 9 分,跑第二得 8 分,依次類推。
- 03-09 關注:3