[問題]printf 輸出問題

作者: samsandy (阿母跑很快)   2019-11-18 21:29:01
開發平台(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
作者: taies (akira)   2019-11-18 21:41:00
int/int = int
作者: samsandy (阿母跑很快)   2019-11-18 21:47:00
還是不太懂 是型別的問題嗎
作者: nh60211as   2019-11-18 21:48:00
你lev(m)出來的值是多少?我剛剛跑了結果c是0沒錯啊
作者: taies (akira)   2019-11-18 21:50:00
你是想寫C18取6? 算式寫錯了...
作者: samsandy (阿母跑很快)   2019-11-18 21:55:00
lev(m)我單獨cout 結果是對的 我是要寫C幾取幾沒錯
作者: taies (akira)   2019-11-18 21:57:00
你的num是18!/12! 但lev(m)=12! 這時應該是6!才對
作者: samsandy (阿母跑很快)   2019-11-18 22:08:00
好的感謝解答 我再試試看
作者: mmmmei (mmm煤)   2019-11-19 09:26:00
你的倒數第二行num是18*17*16*15*14*13,但是lev(m)是12! 相除=0.0279 沒有型別轉換就是0了如果你是要取c幾取幾我建議直接lev(n) / lev(m) 再/ lev(n-m) 這樣不會改變n跟m你也比較不會不小心誤觸

Links booklink

Contact Us: admin [ a t ] ucptt.com