模板与异常处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验14 模板与异常处理
一、实验目的
1.理解函数模板和类模板的概念。
2.会编写包含函数模板和类模板的程序。
3.正确理解C++的异常处理机制。
4.掌握异常处理的编程特点。
5.了解异常分类层次,常见系统异常。
6.学习自定义异常的定义及方法,异常的抛出与处理。
二、实验内容
1.编写一个求绝对值的函数模板,并测试。
2.请将冒泡排序函数改写成为模板函数并编写一个程序进行测试。
3.编写一个任意类类型AnyType模板,并请编写一个程序来使用该AnyType类模板。
4.编写求阶乘n!的函数,当用户的输入太大时(如51),会出现错误,使用异常处理机制来解决这一问题;如果n小于零,也抛掷一个异常进行处理。
5.编程并观察当库函数sqrt()的参数为负数,log()的参数为0时,系统会出现什么情况,请解决之。
6. 编写一个程序,用于根据用户输入的命令行参数数量来计算长方形、正方形、三角形的面积。如果输入的参数为一个、二个、三个则它们应分别对应正方形、长方形、三角形,如果没有参数,则通过异常处理方法显示错误消息。
三实验程序及结果
1、
#include
template
T fab(T a)
{
if(a>0)
return a;
else
return -a;
}
void main()
{
double a;
cout<<"请输入一个数:"<<'\n';
cin>>a;
cout< cout<<"感谢使用本程序哦!"<<'\n'; } 2、 #include using namespace std; template void paixu(T *a,int i) { for(int j=0;j for(int k=0;k<=j-1;k++) if(a[k]>a[k+1]) { T m; m=a[k]; a[k]=a[k+1]; a[k+1]=m; } }; void main() { int int_a[6]={12,15,1,4,798,20}; float float_a[6]={1.1,2.2,1.3,15,156}; cout<<"整型排序之前为:"<<'\n'; for(int i=0;i<6;i++) cout< paixu(int_a,6); cout<<'\n'<<"整型排序之后为:"<<'\n'; for( i=0;i<6;i++) cout< cout<<'\n'<<"浮点型排序之前为:"<<'\n'; for( i=0;i<5;i++) cout< paixu(float_a,5); cout<<'\n'<<"浮点型排序之后为:"<<'\n'; for(i=0;i<5;i++) cout< cout<<'\n'<<"感谢使用本程序哦!"<<'\n'; } 3、 #include using namespace std; template class shuzu { private: T a[12]; int b; int b; public: shuzu() { cout<<"请输入类中数组元素的个数:"<<'\n'; cin>>b; cout<<"请对数组的元素初始化:"<<'\n'; for(int i=0;i cin>>a[i]; } void output() { for(int i=0;i cout< cout<<'\n'; } void paixu() { int b; public: shuzu() { cout<<"请输入类中数组元素的个数:"<<'\n'; cin>>b; cout<<"请对数组的元素初始化:"<<'\n'; for(int i=0;i cin>>a[i]; } void output() { for(int i=0;i cout< cout<<'\n'; } void paixu() { for(int j=0;j for(int k=0;k<=j-1;k++) if(a[k]>a[k+1]) { T m; m=a[k]; a[k]=a[k+1];