天天看点

<小甲鱼>C++实例练习24—捕获异常前言:问题描述:代码实现:

前言:

参考: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;
}
           
c++

继续阅读