|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
#include <climits>
unsigned long returnFactorial(unsigned short num) throw(const char *);
int main()
{
unsigned short num = 0;
std::cout << "请输入一个整数:";
while( !(std::cin >> num) || (num < 1))
{
std::cin.clear(); //清理错误表示符
std::cin.ignore(100,'\n'); //清除缓存区
std::cout << "请输入一个整数:";
}
std::cin.ignore(100,'\n');
try
{
unsigned long factorial = returnFactorial(num);
std::cout << num << "的阶乘是:" << factorial;
}
catch(const char *e)
{
std::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;
} |
|