请C++高手帮我看一下我的程序哪里出了问题!谢

来源:百度知道 编辑:UC知道 时间:2024/06/14 19:41:27
#include <iostream>
using namespace std;
double Fact(int);
int Comb(int, int);
void main ()
{
int n,r;
cout<<"n=" ; cin>>n;
cout<<"r=" ; cin>>r;
cout<<Comb(n,r)<<endl;
}

double Fact(int n)
{
int f=1;
for(int i=1;i<=n;i++)
f=f*i;
return f;
}
int Comb(int n , int r)
{
return Fact(n)/(Fact(r)*Fact(n-r));
}

程序可以运行啊,,你所指的大概是数字过大时输出错误,那是由于整形数据上界较小而溢出,改成long、float或double都行,程序本身没问题

#include <iostream>
using namespace std;
double Fact(int);
double Comb(int, int);
int main ()
{
int n,r;
cout<<"n=" ; cin>>n;
cout<<"r=" ; cin>>r;
cout<<Comb(n,r)<<endl;
}

double Fact(int n)
{
int f=1;
for(int i=1;i<=n;i++)
f=f*i;
return f;
}
double Comb(int n , int r) //返回值类型有问题
{
return Fact(n)/(Fact(r)*Fact(n-r));
}