整數的逆序輸出
1.算法思路
- 利用%取餘運算,根據不同進制數數據採用不同;
- 對取得餘數進行逆運算(乘以剛纔除數),然後加上剛纔取得餘數;
- 循環上一步;
2、代碼如下:
// 整數的逆序輸出
#include <stdio.h>
int main()
{
int x;
printf("請輸入一個整數:");
scanf("%d",&x);
// x=700;
int digit;
int ret = 0;
while (x>0){
digit = x%10;
// printf("%d\n",digit);
ret = ret*10+digit;
// printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);
x/=10;
}
printf("逆序數爲:%d",ret);
return 0;
}
代碼輸出:
請輸入一個整數:123456
逆序數爲:654321
--------------------------------
Process exited after 5.501 seconds with return value 0
請按任意鍵繼續. .
代碼分析:主要是取餘運算,和逆序輸出銜接問題。
整數的順序輸出
-
算法思路
1、當整數進行順序輸出時,首先要利用除法對它的最高位進行取整,然後對餘數進行再取整,依次輸出最高位取整結果。
2、這個運算需要知道輸入的整數是幾位數的整數,然後才能參與運算。 -
代碼如下:
#include<stdio.h>
int main()
{
// x=13425;
// x/10000 >1;
// x%10000 >3425;
// 10000/10 >1000;
// 3425/1000 >3;
// 3425%1000 >425;
// 1000/10 >100;
// 425/100 >4;
// 425%100 >25;
// 100/10 >10;
// 25/10 >2;
// 25%10 >5
// 10/10 >1;
// 5/1 >5;
// 5%1 >5;
// 1/10 >0;
int x;
scanf("%d",&x);
int mask=1;
int t=x;
while(t>9){
t/=10;
mask*=10;
}
printf("x=%d,mask=%d\n",x,mask);
while(mask>0){
int d=x/mask;
if(mask>0){
printf("%d ",d);
}
x%=mask;
mask/=10;
}
return 0;
}
代碼輸出:
70000
x=70000,mask=10000
7 0 0 0 0
--------------------------------
Process exited after 6.554 seconds with return value 0
請按任意鍵繼續. . .
代碼分析:
這裏的出彩部分就是採用了 d=x/mask ;mask>0 進行了判定,沒有用 x 的值作爲條件循環的判斷語句,可以更好的避免了邊條件的輸出錯誤問題。
while(mask>0){
int d=x/mask;
if(mask>0){
printf("%d ",d);
}
x%=mask;
mask/=10;
總結
循環的判定條件很重要,用的好可以起到優化程序使代碼更加簡潔的效果,在累加的計算中初始化變量一定要設置爲0;累乘的計算中初始化變量爲1。