模板与异常处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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];

相关文档
最新文档