7-25 反轉數 (10 分)簡單+複雜 方法
阿新 • • 發佈:2018-11-06
首先,思路很重要,這題可以10行內搞定,也可以打30行,效率肯定是不同的
放題先:
7-25 反轉數 (10 分)
輸入一個有符號整數,輸出該整數的反轉值。
輸入格式:
有符號整數
輸出格式:
有符號整數的反轉數
輸入樣例:
在這裡給出一組輸入。例如:
100
-123
輸出樣例:
在這裡給出相應的輸出。例如:
1
-321
。
。
。
簡單方法:
PS:但要注意輸入為0的情況
先把輸入數最後的0都去掉,然後判斷符號,再逆序輸出
(我感覺這種方法還可以更簡單,行數更少,但因為我是從下面那個方法改過來的,所以可能有些瑕疵,湊合著看吧)
#include<stdio.h> int main() { int in,c=0,a=0; scanf("%d",&in); if(in<0) { in=-in; c++; } if(c!=0) printf("-"); for(;in%10==0;) { if(in==0) { printf("%d",in); break; } in=in/10; } for(;in!=0;) { a=in%10; in=in/10; printf("%d",a); } return 0; }
複雜方法:
PS:也要注意輸入為0的情況
我是走一步改一步,所以得出來的程式碼比較繁瑣,想到哪改到哪,我的思維模式就是這樣,你們要是說這個程式碼麻煩呀,複雜呀,那我沒脾氣的好吧
。
。
我當時打的時候是這麼想的:先考慮正負的符號問題,然後挨個位反轉,這時發現了0的問題,我又加了個輸出printf和變數b,一個printf負責輸出反轉後第一個非0的數(把反轉後首位前的0全都過濾掉),然後使變數++,然後if語句會使之後迴圈反轉的數都用另一個printf來輸出(非首位所以0也輸出)。
#include<stdio.h> int main() { int in,c=0,a=0,b=0; scanf("%d",&in); if(in<0) { in=-in; c++; } if(c!=0) printf("-"); for(;;) { if(in==0) b++; a=in%10; in=in/10; if(a>0&&b==0) { b++; printf("%d",a); if(in==0) break; continue; } if(a>=0&&b!=0) printf("%d",a); if(in==0) break; } return 0; }
。
。
。