7-42 逆序的三位數(C語言版)
阿新 • • 發佈:2018-12-17
7-42 逆序的三位數 (10 分) 程式每次讀入一個正3位數,然後輸出按位逆序的數字。注意:當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。
輸入格式: 每個測試是一個3位的正整數。
輸出格式: 輸出按位逆序的數。
輸入樣例: 123 輸出樣例: 321
參考程式碼
#include<stdio.h> int main() { int n,a,b,c,sum=0; scanf("%d",&n); a=n/100;//百位 b=n%10;//個位 c=(n/10)%10;//十位 sum=b*100+c*10+a; printf("%d",sum); return 0; }
注:這道題其實很簡單,之所以會寫這道題。是因為我寫類似的逆序題目程式時忽略一個小細節,導致程式出錯,之前總感覺要求一個整數的所有位的數太麻煩,所以我就定義一個字串,將字串逆序輸出,只要判斷字串首位不為零即可輸出,如下程式碼:
錯誤程式碼
#include<stdio.h> int main() { char s[5]; int len,i; gets(s); len=strlen(s); for(i=len-1;i>=0;i--) { if(s[i]=='0'&&i==len-1) { continue; } else { printf("%c",s[i]); } } return 0; }
這個程式碼只可將最末尾的0去除,如果一個三位數末尾有兩個0,比如200 那結局就比較尷尬了,如果想要正確,還需新增其它的判斷語句(如果是個多位數,那情況就會更復雜,整數中間的零和整數末尾的零區別,輸出),務必會浪費許多時間,還不如用整數位上的數來計算,來的痛快呢!所以這個細節自己應該銘記,現在寫出來,以防自己忘記! 如果要求多位數的逆序,可以參考第一種的方法,運用遞迴函式實現。 加油!