函数模板与异常处理.doc

上传人:cl****1 文档编号:543512075 上传时间:2024-03-28 格式:DOC 页数:8 大小:112.50KB
返回 下载 相关 举报
函数模板与异常处理.doc_第1页
第1页 / 共8页
函数模板与异常处理.doc_第2页
第2页 / 共8页
函数模板与异常处理.doc_第3页
第3页 / 共8页
函数模板与异常处理.doc_第4页
第4页 / 共8页
函数模板与异常处理.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《函数模板与异常处理.doc》由会员分享,可在线阅读,更多相关《函数模板与异常处理.doc(8页珍藏版)》请在金锄头文库上搜索。

1、C+面向对象程序设计实验报告实验序号:5 实验项目名称:模板与异常处理学号1107012143姓名卢卉雯专业2011计算机科学与技术实验地点1#316指导教师吴芸实验时间2012-5-22一、实验目的及要求(1)正确理解模板的概念;(2)掌握函数模板和类模板的声明和使用方法;(3)学习简单的异常处理方法; 二、实验设备(环境)及要求 Micorsoft Visual C+ 6.0三、实验内容与步骤(题目、算法和结果描述)1、调试下列程序,写出程序的输出结果并分析原因。(1)#includeusing namespace std;template T max(T x,T y) return xy

2、?x:y;int max(int a,int b) return ab?a:b;double max(double a,double b) return ab?a:b;int main()coutmax(3,7) is max(3,7)endl;return 0;【运行结果截图】:【运行结果分析】定义了一个求最大值的函数模板,定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名非模板函数与函数模板重载.3和7均是字符型,找不到与之匹配的函数,所以调用了函数模板,使其实例化,由T型转变为char型。(2)#includeusing namespace std;int max(i

3、nt a,int b) return ab?a:b;double max(double a,double b) return ab?a:b;int main()coutmax(3,7) is max(3,7)endl;return 0;【运行结果截图】:【运行结果分析】:定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名函数重载.3和7均是字符型,找不到与之匹配的函数,所以得不出正确结果。2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。【运行结果截图】:3、编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。【

4、提示】:设计一个类模板。TemplateClass Array具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int型和double类型的两个模板类,分别对整型数组和双精度数组完成所要求的操作【运行结果截图】:4、编写程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。 【运行结果截图】:5、结合数据结构“线性表”的知识和课本例题6.8,采用C+面向对象程序设计实现“线性表”。四、分析与讨论(记录实验过程中出现的主要问题和心得体会)1.在使用非模板函数时要注意输入的语句应符合函数的类型,或者定义一个函数模板使其实例化,否则无法得出正确结论。2.对异常处理有了一些

5、理解,但不知道异常处理(如第4题)可以循环吗?3.对用类模板实现线性表不是很懂.五、教师评语签名:日期:成绩附:程序源代码1、(1)#includeusing namespace std;template T max(T x,T y) return xy?x:y;int max(int a,int b) return ab?a:b;double max(double a,double b) return ab?a:b;int main()coutmax(3,7) is max(3,7)endl;return 0;(2)#includeusing namespace std;int max(in

6、t a,int b) return ab?a:b;double max(double a,double b) return ab?a:b;int main()coutmax(3,7) is max(3,7)endl;return 0;2、#include using namespace std;templateT max (T * x,int n) T max=x0;for(int i=1;ixi? max:xi;return max;templateT min (T * x,int n) T min=x0;for(int i=1;in;i+) min=minxi? min:xi;return

7、 min;int main() int a5= 1,4,2,3,5 ;double b5=1.1,4.4,2.2,3.3,5.5;cout数组a5= 1,4,2,3,5的最大值is: max(a,5)endl;cout数组a5= 1,4,2,3,5的最小值is: min(a,5)endl;cout数组b5=1.1,4.4,2.2,3.3,5.5的最大值is: max(b,5)endl; cout数组b5=1.1,4.4,2.2,3.3,5.5的最小值is: min(b,5)endl; return 0;3、#includeusing namespace std;template class A

8、rray1 public:Array1 (Type *a,int length) len=length; for(int i=0;ilen;i+) Arrayi=ai;/template void sort()/排序 Type a10 ,temp; for(int n=0;nlen;n+) an=Arrayn; for(int j=0;jlen;j+) for (int i=0;iai+1) temp=ai; ai=ai+1; ai+1=temp; cout数组排序endl; for(int m=0;mlen;m+) coutam ; coutendl;/template void inver

9、t()/倒置Type invert10;for(int j=0;jlen;j+) invertj=Arraylen-1-j;cout数组倒置endl;for(int m=0;mlen;m+)coutinvertm ;coutendl;void seek(Type y)/查找int i=0;for(int j=0;jlen;j+) if(Arrayj=y) cout查找成功!在第j位置endl; i=j; / break;if(i=0) cout查找不成功!endl;/template void sum()/求和Type sum=Array0; for(int j=1;jlen;j+) sum=

10、sum+Arrayj; cout数组之和:sumendl;private:int len; Type Array10;int main()int c5=1,8,2,7,9;double d4=3.1,8.9,56.9,2.9; Array1a(c,5);Array1b(d,4); cout*int型数组*endl;cout原函数为:endl;for(int i=0;i5;i+)coutci ;coutendl; a.sort(); a.invert(); a.seek(3); a.sum();cout*double型数组*endl;cout原函数为:endl;for(int j=0;j4;j+)coutdj ;coutendl; b.sort(); b.invert(); b.seek(8.9); b.sum(); return 0;4、#include #include using namespace std;void main()double number;double result;cout number;try if (number 0) throw exception(输入的数是负数! ); result = sqrt(number); cout 平方根是: result endl;catch (exception e) cout e.what() endl;5、

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号