河北工业大学C实验报告实验五.docx
《河北工业大学C实验报告实验五.docx》由会员分享,可在线阅读,更多相关《河北工业大学C实验报告实验五.docx(9页珍藏版)》请在冰豆网上搜索。
河北工业大学C实验报告实验五
1、已知下列主函数:
intmain()
{
cout<cout<cout<return0;
}
声明求3个数中最小者的函数模板,并写出调用此函数模板的完整程序。
#include
usingnamespacestd;
template
Tmin(Ta,Tb,Tc)
{
Tmin;
if(a<=b)
min=a;
else
min=b;
if(min>=c)
min=c;
returnmin;
}
intmain()
{
cout<cout<cout<return0;
}
2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度类型。
#include
usingnamespacestd;
template
voidGetMaxMin(T*a,inttheSize)
{
TtmpMax=a[0];
TtmpMin=a[0];
for(inti=0;i{
if(a[i]>tmpMax)
{
tmpMax=a[i];
}
if(a[i]{
tmpMin=a[i];
}
}
cout<<"maxelemis"<cout<<"minelemis"<}
intc[]={1,2,3};
doubleb[]={1.1,2.2,3.3};
chard[]={'a','b','c'};
voidmain()
{
GetMaxMin(c,3);
GetMaxMin(b,3);
GetMaxMin(d,3);
}
3、编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。
#include
usingnamespacestd;
template
classpaixu
{
t*set;
intn;
public:
paixu(t*data,intm):
set(data),n(m){}
voidsort();
};
template
voidpaixu:
:
sort()
{
ttemp;
for(inti=0;ifor(intj=0;jif(set[j]>set[j+1])
{
temp=set[j];
set[j]=set[j+1];
set[j+1]=temp;
}
for(intj=0;jcout<cout<}
intmain()
{
inta[]={1,3,2,7,5,9};
doubleb[]={6.6,9.9,7.7,8.8,4.4,2.2};
paixup1(a,6);
p1.sort();
paixup2(b,6);
p2.sort();
charc[]={'a','c','r','b'};
paixup3(c,4);
p3.sort();
return0;
}
4、编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。
【提示】
设计一个类模板
template
classArray
{
……
};
具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别是int型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。
#include
#include
template
classArray
{
T*set;
intn;
public:
Array(T*data,inti){set=data;n=i;}
~Array(){}
voidsort();//排序
intseek(Tkey);//查找指定的元素
Tsum();//求和
voiddisp();//显示所有的元素
};
template
voidArray:
:
sort()
{
inti,j;
Ttemp;
for(i=1;ifor(j=n-1;j>=i;j--)
if(set[j-1]>set[j])
{
temp=set[j-1];set[j-1]=set[j];set[j]=temp;
}
}
template
intArray:
:
seek(Tkey)
{
inti;
for(i=0;iif(set[i]==key)
returni;
return-1;
}
template
TArray:
:
sum()
{
Ts=0;inti;
for(i=0;is+=set;
returns;
}
template
voidArray:
:
disp()
{
inti;
for(i=0;icout<cout<}
voidmain()
{
inta[]={6,3,8,1,9,4,7,5,2};
doubleb[]={2.3,6.1,1.5,8.4,6.7,3.8};
Arrayarr1(a,9);
Arrayarr2(b,6);
cout<<"arr1:
"<cout<<"原序列:
";arr1.disp();
cout<<"8在arr1中的位置:
"<arr1.sort();
cout<<"排序后:
";arr1.disp();
cout<<"arr2:
"<cout<<"原序列:
";arr2.disp();
cout<<"8.4在arr2中的位置:
"<arr2.sort();
cout<<"排序后:
";arr2.disp();
}5、编写一个程序,求输入数的平方根。
设置异常处理,对输入负数的情况给出提示。
#include
#include
usingnamespacestd;
voidmain()
{
doublenumber;
cout<<"请输入一个数:
";
cin>>number;
try
{
if(number<0)
thrownumber;
cout<<"平方根是"<}
catch(double)
{
cout<<"输入数为负数,错误!
"<}
}