您好,欢迎来到年旅网。
搜索
您的当前位置:首页C++实验报告(模板与异常处理)

C++实验报告(模板与异常处理)

来源:年旅网


丽 水 学 院 计 算 机 实 验 报 告

C++面向对象程序设计 课程名称 实验时数 实验项目名称 实验类型 模板与异常处理 □操作性 □验证性 □设计性 □综合性 实验日期 2018. 网络 无 学 号 6 指导老师 学生姓名 同组成员 实验地点 (包括机号 ) 班 级 (教师根据实际情况在两种成绩的评定方法中确定其一) 等级制成绩:□优 □良 □中 □及 □不及格 百分制成绩: (具体的教师批阅,教师可在符合的选项中勾选,同时根据具体情况补充其它评语,特别是必须指出实验过程存在的问题与不足之处。) □实验目的明确; □操作方法与步骤正确; □设计文稿(表格、程序、数据库、网页)符合要求; □界面美观;□布局合理; □程序结构合理;□算法正确;□语法、语义正确;□题解正确; 教师评阅 □实验结果正确;□保存路径正确; □实验分析总结全面;□解析完整;□文字流畅;□实验报告规范; 其他: 评阅教师签名 (不同类型的实验课对实验报告可有不同要求,各个课程的实验报告可以根据自己的学科特点做适当的调整,由任课教师确定填写的内容,学生进行勾选,具体内容用附页填写。) 实验报告内容 □实验目的和要求 □实验内容和原理 □主要仪器设备 □操作方法与实验步骤 □实验数据记录和处理 □实验结果与分析 □讨论、心得 附页:(共 页,第 页)

丽 水 学 院 计 算 机 实 验 报 告

一、 实验目的

(1)正确理解模板的概念。

(2)掌握函数模板和类模板的声明和使用方法。

(3)学习简单的异常处理方法。实验环境 软件:Windows 10操作系统、VC++ 二、 实验内容

1.分析并调试下列程序,写出运行结果并分析原因。 (1)#include using namespace std; template T max(T x,T y) {return x>y?x:y;} int max(int a,int b) {return a>b?a:b;}

double max(double a,double b) {return a>b?a:b;} int main()

{cout<<\"max('3','7')is\"<return 0;}

写出程序的运行结果。

(2)原代码: #include using namespace std; int main(int a,int b) {return a>b?a:b;}

double max(double a,double b) {return a>b?a:b;} int main()

{cout<<\"max('3','7')is\"<#include using namespace std; int max(int a,int b) { return a>b?a:b;}

double max(double a,double b) { return a>b?a:b;}

int main() {

cout<<\"max('3','7') is \"<写出程序的运行结果,并解释输出结果。

解释:定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名函数重载.’3’和’7’均是字符型,找不到与之匹配的函数,所以得不出正确结果。

2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。 #include using namespace std; template T max (T * x,int n) {

T max=x[0];

for(int i=1;imax=max>x[i]? max:x[i]; return max; }

template T min (T * x,int n) { T min=x[0]; for(int i=1;iint main()

{ int a[5]={ 1,4,2,3,5 }; double b[5]={1.1,4.4,2.2,3.3,5.5}; cout<<\"数组a[5]={ 1,4,2,3,5}的最大值is: \"<cout<<\"数组a[5]={ 1,4,2,3,5}的最小值is: \"<cout<<\"数组b[5]={1.1,4.4,2.2,3.3,5.5}的最大值is: \"<cout<<\"数组b[5]={1.1,4.4,2.2,3.3,5.5}的最小值is: \"<} 结果:

3、编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。 【提示】 设计一个类模板 template class Array{ ... };

具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int型和double型的两个模板类,分别对整型数组与双精度

数组完成所要求的操作。 程序:

#include using namespace std; template class Array1{

public:

Array1 (Type *a,int length) { len=length;

for(int i=0;i//template void sort()//排序 {

Type a[10] ,temp; for(int n=0;na[n]=Array[n]; }

for(int j=0;jfor (int i=0;ia[i+1]) {

temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;

} }

cout<<\"数组排序\"<cout<cout<//template void invert()//倒置 {

Type invert[10]; for(int j=0;jvoid seek(Type y)//查找 { int i=0;

for(int j=0;jif(Array[j]==y)

{cout<<\"查找成功!\"<<\"在第\"<// break; } if(i==0)

cout<<\"查找不成功!\"<//template void sum()//求和 {

Type sum=Array[0]; for(int j=1;jcout<<\"数组之和:\"<Type Array[10]; }; int main()

{ int c[5]={1,8,2,7,9}; double d[4]={3.1,8.9,56.9,2.9}; Array1a(c,5); Array1b(d,4);

cout<<\"***int型数组***\"<cout<<\"***double型数组***\"<return 0; } 结果:

4、编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。 程序:

#include #include using namespace std; void main() {

double number; double result;

cout << \"请输入一个数: \"; cin >> number;

try {

if (number < 0) {

throw exception(\"输入的数是负数! \"); }

result = sqrt(number);

cout << \"平方根是:\" << result << endl; }

catch (exception e) {

cout << e.what() << endl; } }

实验结果:

5、使用C++的string类,将5个字符串按逆转后的顺序显示出来。例如,逆转前5个字符的字符串是: Germany Japan America Britain France

按逆转后的顺序输出字符串是:France Britain America Japan Germany 程序: 结果:

五、实验心得 通过这次的实验,知道了模板与异常处理的使用方法,加深了记忆。并且有了一些经验,在使用非模板函数时要注意输入的语句应符合函数的类型,或者定义一个函数模板使其实例化,否则无法得出正确结论。。在编程的过程中,调试与百度有很大帮助,自我解决问题的能

力有了提高。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务