看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Os 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Xcode 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 為什麼輸出是0 餵入的資料(Input): 18 6 預期的正確結果(Expected Output): 18564 錯誤結果(Wrong Output): c輸出0 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) // // main.cpp // sam // // Created by sam on 2019/9/3. // Copyright ? 2019 sam. All rights reserved. // #include<iostream> #include <stdio.h> using namespace std; long int lev(int num){ long int a=1; for(int i=1;i<=num;i++){ a=a*i; } return a; } int main(){ int n,m; long int num=1; cin>>n>>m; if(m<(n/2)) m=n-m; while(n>m){ num=num*n; n--; } cout<<num<<"\n"; long int c=num/lev(m); printf("%lu",c); } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.28.229.101 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1574083743.A.DD4.html ※ 編輯: samsandy (110.28.229.101 臺灣), 11/18/2019 21:29:38
taies: int/int = int 11/18 21:41
samsandy: 還是不太懂 是型別的問題嗎 11/18 21:47
nh60211as: 你lev(m)出來的值是多少?我剛剛跑了結果c是0沒錯啊 11/18 21:48
taies: 你是想寫C18取6? 算式寫錯了... 11/18 21:50
samsandy: lev(m)我單獨cout 結果是對的 我是要寫C幾取幾沒錯 11/18 21:55
taies: 你的num是18!/12! 但lev(m)=12! 這時應該是6!才對 11/18 21:57
samsandy: 好的感謝解答 我再試試看 11/18 22:08
mmmmei: 你的倒數第二行num是18*17*16*15*14*13,但是lev(m)是12 11/19 09:26
mmmmei: ! 相除=0.0279 沒有型別轉換就是0了 11/19 09:26
mmmmei: 如果你是要取c幾取幾我建議直接lev(n) / lev(m) 再/ lev( 11/19 09:29
mmmmei: n-m) 這樣不會改變n跟m你也比較不會不小心誤觸 11/19 09:29