项目要求
求n!的函数,当用户的输入为负数,以及输入数太大时(例如大于12),使用异常处理机制予以拒绝,并给出恰当的提示。
代码如下
#include <iostream>
using namespace std;
int counter(int n)
{
int sum=1;
int j;
if (n>12)
throw n;
if (n<=0) throw n;
else
{
for (j=1; j<=n; j++)
{
sum*=j;
}
}
return sum;
}
int main()
{
int n;
try
{
cout<<"请输入一个大于0,小于2的数:"<<endl;
cin>>n;
cout<<counter(n);
}
catch (int)
{
cout<<"输入的数不在范围内,无法计算!"<<endl;
}
return 0;
}
运行结果
学习心得
发现上面弄成了小于2……应该是12
试着改了一下throw的方式
代码如下
#include <iostream>
using namespace std;
int counter(int n)
{
int sum;
int j;
if (n>12)
throw n;
if (n<0) throw 0.1*n;//试验一下区分开输入数小于0和大于12的情况
if (n==0) sum=0;
else
{
sum=1;
for (j=1; j<=n; j++)
{
sum*=j;
}
}
return sum;
}
int main()
{
int n;
try
{
cout<<"请输入一个大于0,小于2的数:"<<endl;
cin>>n;
cout<<counter(n);
}
catch (int)
{
cout<<"输入的数大于12,无法计算!"<<endl;
}
catch (double)
{
cout<<"输入的数小于0,无法计算!"<<endl;
}
return 0;
}
运行结果