怎么控制输出的范围?
有一个程序要求阶乘,我已经写出来了!
但是还有一个要求:当结果将要超出表示范围时退出,显示出溢出前的n以及结果!
这个该怎么做呀?
/***************************************************
* 程序文件名: 习题3_3.1.cpp *
* 功能: 求n!,显示溢出前的n以及结果 *
* 设计者: LiuYu *
* 时 间: 21-7-2007 *
****************************************************/
#include <iostream>
using namespace std;
int fact(int n);
int main()
{
cout < < "Please input a number: " < <endl;
int n,i;
cin > > n;
cout < < "The Factorial of " < <n < < " is " < <fact(n) < <endl;
system( "pause ");
return 0;
}
int fact(int n)
{
int i;
int f=1;
for (i=1;i <=n;i++)
{
f*=i;
}
return f;
}
[解决办法]
if (f> =32位int所能表示的最大值)//这句是错的,哥们,你f是int怎么可能超过int的最大值呢
[解决办法]
if (f> =32位int所能表示的最大值)//这句是错的,哥们,你f是int怎么可能超过int的最大值呢
--------------------------------------------------
谢谢提醒。
一个投机的方法就是,算出能存储的最大阶乘数是 2004189184(而此时的 n 为16),那么溢出前的n值肯定是16 ,
int fact(int n)
{
int i;
int f=1;
for (i=1;i <=n;i++)
{
f*=i;
if (f <=0)
{
cout < < "溢出前n等于 16 " < <endl;
return f=2004189184;
}
}
return f;
}