第一题 & 第四题已给出答案, 第三题请参考清华大学的郑莉编的 c++程序设计这本书的第244页,题目类似. 第二题只给你点提示,也看你自己的了,不难.
第一题:
#include
using namespace std;
template
T maximum(T a[],int N)
{
T max;
max= a[0];
for(int i=0;i
max = a[i];
}
return max;
}
template
void display(T a[],int N)
{
cout<<"数组元素如下所示:\n";
for(int i=0;i
void main()
{
int a[]={10,2,5,4,19,20,3}; // 用一个整形数组测试
float b[]={1.0,2.8,3.94,4.51,0.61,7.83}; // 用一个浮点型数组测试
display(a,sizeof(a)/sizeof(int));
cout<<"该数组的最大值为:"<
cout<<"该数组的最大值为:"<
}
第四题(包含两个文件, 1.Vector.h, 2.vector.cpp):
//1. vector.h
#include"assert.h"
template
class Vector
{
public:
Vector(unsigned);
Vector(unsigned,T);
Vector(const Vector
virtual ~Vector();
T & operator[](unsigned);
Vector
Vector
Vector
int operator *(const Vector
//friend ostream & operator <<(ostream & out,Vector
unsigned length() const;
unsigned setSize(unsigned);
unsigned setSize(unsigned,T);
protected:
T * data;
unsigned size;
};
template
{
data=new T[size];
assert(data!=0);
}
template
{
data=new T[size];
assert(data!=0);
for(int i=0;i
}
template
{
size=v.size;
data=new T[size];
for(unsigned i=0;i
}
template
{
delete[]data;
}
template
T & Vector
{
return data[u];
}
template
Vector
{
if(size!=v.size)
{
T * np=new T[v.size];
assert(np!=0);
delete[]data;
size=v.size;
data=np;
}
for(unsigned i=0;i
return *this;
}
template
{
Vector
for(unsigned i=0;i
return d;
}
template
{
Vector
for(unsigned i=0;i
return d;
}
template
{
int a=0;
for(unsigned i=0;i
return a;
}
template
{
if(size!=u)
{
T *np=new T[u];
assert(np!=0);
unsigned n=u<=size?u:size;
for(int i=0;i
delete[]data;
size=u;
data=np;
}
return size;
}
//2. vector.cpp
#include
#include"Vector.h"
#include"assert.h"
void main()
{
Vector
int c;
a[0]=1;a[1]=1;a[2]=4;v[0]=2;v[1]=3;v[2]=5;
c=a*v;
cout<<"c="<
for( int i=0;i<3;i++)
cout<<"d["< cout<
for(i=0;i<3;i++)
cout<<"d["< cout<
第二题:
#include
//模版类
template
T max(T x,T y)
{
return (x>y?x:y); // 找到较大值,这是两个数,你可以扩展到多个数
}
//主函数
void main()
{
cout<
又作弊!