怎么控制输出的范围?

实达诚实 2007-07-22 01:18:42
有一个程序要求阶乘,我已经写出来了!

但是还有一个要求:当结果将要超出表示范围时退出,显示出溢出前的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;
}

...全文
382 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
comman_ndsc 2007-07-24
  • 打赏
  • 举报
回复
看明白了!

如果我没有溢出呢?
--------------------
那就输出该阶乘的值撒
windfy01 2007-07-23
  • 打赏
  • 举报
回复
溢出前那个数应该可以计算,因为unsigned int 最大也只有4294967295
实达诚实 2007-07-23
  • 打赏
  • 举报
回复
看明白了!

如果我没有溢出呢?
实达诚实 2007-07-23
  • 打赏
  • 举报
回复
没有看明白高手讨论的!
windfy01 2007-07-22
  • 打赏
  • 举报
回复
我服了,高手,高手,高高手
comman_ndsc 2007-07-22
  • 打赏
  • 举报
回复
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;
}
windfy01 2007-07-22
  • 打赏
  • 举报
回复
为什么有时猴输出负数
vsfan 2007-07-22
  • 打赏
  • 举报
回复

if (f>=32位int所能表示的最大值)//这句是错的,哥们,你f是int怎么可能超过int的最大值呢
vsfan 2007-07-22
  • 打赏
  • 举报
回复
没有必要使用异常机制的
因为是n!
所以事实上是可以预测什么时候发生溢出的
自己算一下判断就可以了
babala512 2007-07-22
  • 打赏
  • 举报
回复
try
{
你的代码
}
catch(...)
{
出错处理代码
}
实达诚实 2007-07-22
  • 打赏
  • 举报
回复
try catch()

这个怎么使用呢?

楼上的能写出来吗?
uwinb 2007-07-22
  • 打赏
  • 举报
回复
try ... catch() ...
comman_ndsc 2007-07-22
  • 打赏
  • 举报
回复
int fact(int n)
{
int i;
int f=1;

for (i=1;i<=n;i++)
{
f*=i;
if (f>=32位int所能表示的最大值)
{
return f = f/i;
}
}

return f;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧