[問題] 判斷輸出數字的問題

看板C_and_CPP (C/C++)作者 (PT鄉民)時間12年前 (2014/04/21 00:10), 編輯推噓5(5011)
留言16則, 4人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 餵入的資料(Input): 3 5 預期的正確結果(Expected Output): 6 120 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> int main() { int i,j,sum = 1; printf("===數階運算===\n\n"); printf("請輸入數字:"); scanf("%d",&i); for(j=i;j>0;j--) sum *= j; printf("\n%d!=%3d\n",i,sum); sum= 1; system("PAUSE"); return 0; } 想要寫出判斷 判斷非0的值的位置是在哪?? 輸入3得到6的值 等於 1 輸入5得到120的值 等於 2 找出非0的位置,想說用陣列去表達,但是不是這麼一回事!! 所以上發問求解~'~,thx 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.10.87 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1398010240.A.24E.html

04/21 05:20, , 1F
不太懂你的意思
04/21 05:20, 1F

04/21 05:27, , 2F
如果把整數轉成字串一個一個比 這樣可以嗎?
04/21 05:27, 2F

04/21 05:41, , 3F
6=>1,120=>2 所以6有1個不是0,120兩個不是 0 ?
04/21 05:41, 3F

04/21 05:51, , 4F
還是 120 => 021 => 第2個是0 ?
04/21 05:51, 4F

04/21 05:52, , 5F
不是
04/21 05:52, 5F

04/21 10:07, , 6F
@kattte 經典題, 要找階層一個非零位數
04/21 10:07, 6F

04/21 11:04, , 7F
我知道了@@
04/21 11:04, 7F

04/21 11:06, , 8F
輸入3 應該是得到6 等於6吧
04/21 11:06, 8F

04/21 12:20, , 9F
3!=6,6是第一個非零位數…5!=120,第一個非零位數變第2位
04/21 12:20, 9F

04/21 12:24, , 10F
這題其實就是求,N!尾數有幾個0,用這找還蠻多的
04/21 12:24, 10F

04/21 12:26, , 11F
用不到陣列或大數就算得出來
04/21 12:26, 11F

04/21 13:02, , 12F
感謝EdisonX的解釋 :D
04/21 13:02, 12F

04/21 13:20, , 13F
直接算出答案然後轉成字串是很直觀的解法
04/21 13:20, 13F

04/21 13:21, , 14F
但是考慮到階層的數字成長太迅速,應該有更好的解法
04/21 13:21, 14F

04/21 13:22, , 15F
例如判斷每個數字包含幾個2或5的因數算出答案有幾個10
04/21 13:22, 15F

04/21 13:58, , 16F
記住第一位非零數, 再乘上階層的數字即可
04/21 13:58, 16F
文章代碼(AID): #1JK_609E (C_and_CPP)
文章代碼(AID): #1JK_609E (C_and_CPP)