前言:
参考:B站UP主鱼C_小甲鱼<C++快速入门>
代码调试平台:VS2017,调试成功。
问题描述:
问题描述:用捕获异常对阶乘程序进行处理。
代码实现:
#include <iostream>
#include <climits>
using namespace std;
unsigned long returnFactorial(unsigned short num) throw (const char *); //利用函数进行捕获异常
int main()
{
unsigned short num = 0;
cout << "请输入一个整数:";
while (!(cin >> num) || (num < 1))
{
cin.clear();
cin.ignore(100, '\n');
cout << "请重新输入一个整数:";
}
cin.ignore(100, '\n');
try
{
unsigned long factorial = returnFactorial(num);
cout << num << "的阶乘是:" << factorial;
}
catch (const char *e)
{
cout << e;
}
return 0;
}
unsigned long returnFactorial(unsigned short num) throw(const char *)
{
unsigned long sum = 1;
unsigned long max = ULONG_MAX;
for (int i = 1; i <= num; i++)
{
sum *= i;
max /= i;
}
if (max < 1)
throw"悲催!该基数太大,无法在计算机上求出阶乘值。\n";
else
return sum;
}