[問題] 反轉數字

看板C_and_CPP作者 (挖哩勒)時間13年前 (2010/09/16 23:39), 編輯推噓2(2013)
留言15則, 6人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 希望得到的正確結果: EX:123 VC++:321 Dev-C++:320 程式跑出來的錯誤結果: VC++跑出結果正確,Dev-C++結果錯誤 C++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ && Dev-C++ 有問題的code: (請善用置底文標色功能) #include<stdio.h> #include<math.h> unsigned int rev(unsigned int x); int total,count,temp[50]; unsigned int num[100],result; int main() { result=rev(123); printf("%d\n",result); return 0; } unsigned int rev(unsigned int x) { int n; unsigned int y=0; for(count=0;x>10;count++) { temp[count]=x%10; x/=10; } temp[count]=x; for(n=0;n<=count;n++) y+=temp[n]*pow(10,count-n); return y; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.197.86

09/16 23:48, , 1F
請別用 pow 會有精確度問題
09/16 23:48, 1F

09/16 23:49, , 2F
有個投機的方法,數字轉字串,倒轉後再換回數字
09/16 23:49, 2F

09/16 23:53, , 3F
我是用array存每個位數的數 再print array
09/16 23:53, 3F

09/17 00:09, , 4F
int & unsigned int 不要混用, 因為在不懂編譯器隱式
09/17 00:09, 4F

09/17 00:10, , 5F
轉換的情況下, 可能會跑出很噁心的結果, 像4294967295
09/17 00:10, 5F

09/17 00:10, , 6F
還有就是輸出跟輸入都是整數, 先不考慮精確度問題, 進
09/17 00:10, 6F

09/17 00:11, , 7F
位捨去的細節就夠你煩惱了, 既然每個位元都已經存下來
09/17 00:11, 7F

09/17 00:13, , 8F
再仿造第一個迴圈的方法把他邊乘邊加回復就好, 在做更
09/17 00:13, 8F

09/17 00:13, , 9F
大的數值運算時, 也需要類似這種手法, 程式碼如下 :
09/17 00:13, 9F

09/17 00:13, , 10F
09/17 00:13, 10F

09/17 00:21, , 11F
發現有嚴重問題, 以上code請無視, 拍謝ˊˋ
09/17 00:21, 11F

09/17 00:37, , 12F
小改一下就可以了@_@
09/17 00:37, 12F

09/17 01:19, , 13F
應該是精準度問題,感謝回答,最後還是偷吃步的方法。
09/17 01:19, 13F

09/17 01:27, , 14F
.........
09/17 01:27, 14F

09/17 07:27, , 15F
善用 sprintf() strrev() sscanf() 偷吃步XD
09/17 07:27, 15F
文章代碼(AID): #1CaZf9NZ (C_and_CPP)