首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何控制输出的范围

2012-02-07 
怎么控制输出的范围?有一个程序要求阶乘,我已经写出来了!但是还有一个要求:当结果将要超出表示范围时退出,

怎么控制输出的范围?
有一个程序要求阶乘,我已经写出来了!

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

热点排行
Bad Request.