[问题]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