鱼C论坛

 找回密码
 立即注册

C++学习,第三十二课

已有 524 次阅读2014-8-25 16:25 |个人分类:作业

#include<iostream>
#include<climits>

class Factorial
{
public:
    Factorial(unsigned short num);
    unsigned long getFactorial();
    bool inRange() throw (const char *);/*声明这个函数可能会丢出异常*/

private:
    unsigned short num;
};

Factorial::Factorial(unsigned short num)
{
    this->num = num;
}

unsigned long Factorial::getFactorial()
{
    unsigned long sum=1;
    int i;
    for (i= 1; i <= num; i++)
    {
        sum *= i;
    }
    return sum;
}

bool Factorial::inRange()
{
    unsigned long max = ULONG_MAX;
    int i;
    for (i = num; i >= 1; --i)
    {
        max /= i;
    }

    if (max < 1)
    {
        throw"被粗,数太大了\n\n";    /*定义会丢出的异常内容*/
        return false;
    }
    else
    {
        return true;
    }
}

int main()
{
    unsigned short num = 0;
    std::cout << "请输入一个整数";
    std::cin >> num;
    Factorial fac(num);
    try
    {
        if (fac.inRange())
        {
            std::cout << num << "的阶乘值为:" << fac.getFactorial() << "\n\n";
        }
    }
    /*捕获异常*/
    catch (const char *e)
    {
        std::cout << e;
    }

    system("pause");
    return 0;
}

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 17:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部