第十章类模板课后编程题目答案教学提纲.docx

上传人:b****2 文档编号:690608 上传时间:2022-10-12 格式:DOCX 页数:24 大小:18.17KB
下载 相关 举报
第十章类模板课后编程题目答案教学提纲.docx_第1页
第1页 / 共24页
第十章类模板课后编程题目答案教学提纲.docx_第2页
第2页 / 共24页
第十章类模板课后编程题目答案教学提纲.docx_第3页
第3页 / 共24页
第十章类模板课后编程题目答案教学提纲.docx_第4页
第4页 / 共24页
第十章类模板课后编程题目答案教学提纲.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

第十章类模板课后编程题目答案教学提纲.docx

《第十章类模板课后编程题目答案教学提纲.docx》由会员分享,可在线阅读,更多相关《第十章类模板课后编程题目答案教学提纲.docx(24页珍藏版)》请在冰豆网上搜索。

第十章类模板课后编程题目答案教学提纲.docx

第十章类模板课后编程题目答案教学提纲

 

第十章类模板课后编程题目答案

1。

设计一个类模板,其中包含数据成员Ta[n]以及对其进行排序的成员函数Sort(),

模板参数T可实例化成字符串。

解;如果T仅仅可以实例化成基本数据类型与char*类型的字符串,可通过重载sort()

实现,程序如下:

#include

#include

template

classArray

{

private:

Ta[n];

public:

voidsort(double)

{

for(inti=0;i

for(intj=i+1;j

if(a[i]>a[j])

{

Tt;

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

voidsort(char*)

{

for(inti=0;i

for(intj=i+1;j

if(a[j]==NULL||(a[i]!

=NULL&&strcmp(a[i],a[j])>0))

{

Tt;

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

voiddisp()

{

for(inti=0;i

if(a[i]!

=NULL)

cout<

else

cout<<",\t";

if(a[i]!

=NULL)

cout<

else

cout<

}

Array(Ta[])

{

for(inti=0;i

this->a[i]=a[i];

}

};

voidmain()

{

floatf[]={1.2,2.3,7.7,4,3,4,2.3};

Arraya1(f);

a1.sort(f[0]);

a1.disp();

char*a[6]={"a","abc","ABC","abcd"};

Arraya2(a);

a2.sort(a[0]);

a2.disp();

charc[]={'a','b','C','2'};

Arraya3(c);

a3.sort(c[0]);

a3.disp();

}

如果T的类型可以实例化成自定义的字符串类String类型,需要重载赋值运算符=,插入运算符<<,比较运算符>,分别用于进行字符串赋值,输出,比较。

程序如下:

#include

#include

usingnamespacestd;

classString

{

private:

char*Str;

intlen;

public:

String(intn=0)

{

Str=NULL;

len=n;

}

String(constchar*p)

{

len=strlen(p);

Str=NULL;

if(len!

=0)

{

Str=newchar[len+1];

strcpy(Str,p);

}

}

String(String&r)

{

len=r.len;

if(len>0)

{

Str=newchar[len+1];

strcpy(Str,r.Str);

}

}

~String()

{

if(len>0)

delete[]Str;

}

String&operator=(constString&r)

{

if(len>0)

delete[]Str;

Str=NULL;

len=r.len;

if(len>0)

{

Str=newchar[len+1];

strcpy(Str,r.Str);

}

return*this;

}

booloperator>(constString&r)

{

if(Str==NULL)

returnfalse;

if(Str!

=NULL&&r.Str==NULL)

returntrue;

intn=(len>r.len?

len:

r.len);

for(inti=0;i

{

if(Str[i]

returnfalse;

if(Str[i]>r.Str[i])

returntrue;

}

returnfalse;

}

friendostream&operator<<(ostream&output,constString&s)

{

if(s.Str!

=NULL)

output<

returnoutput;

}

};

template

classArray

{

private:

Ta[n];

public:

voidsort()

{

for(inti=0;i

for(intj=i+1;j

if(a[i]>a[j])

{

Tt;

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

voiddisp()

{

for(inti=0;i

cout<

cout<

}

Array(Ta[])

{

for(inti=0;i

this->a[i]=a[i];

}

};

voidmain()

{

floatf[]={1.2,2.3,7.7,4,3,4,2.3};

Arraya1(f);

a1.sort();

a1.disp();

Stringa[6]={"a","abc","ABC","abcd"};

Arraya2(a);

a2.sort();

a2.disp();

}

2.设计一个类模板,其中包括数据成员Ta[n]以及在其中进行查找数据元素的函数intsearch(T)模板参数T可实例化成字符串。

#include

#include

usingnamespacestd;

classString

{

private:

char*Str;

intlen;

public:

String(intn=0)

{

Str=NULL;

len=n;

}

String(constchar*p)

{

len=strlen(p);

Str=NULL;

if(len!

=0)

{

Str=newchar[len+1];

strcpy(Str,p);

}

}

String(String&r)

{

len=r.len;

if(len>0)

{

Str=newchar[len+1];

strcpy(Str,r.Str);

}

}

~String()

{

if(len>0)

delete[]Str;

}

String&operator=(constString&r)

{

if(len>0)

delete[]Str;

Str=NULL;

len=r.len;

if(len>0)

{

Str=newchar[len+1];

strcpy(Str,r.Str);

}

return*this;

}

booloperator==(constString&r)

{

if(len!

=r.len)

returnfalse;

if(len==0)

returntrue;

for(inti=0;i

if(Str[i]!

=r.Str[i])

returnfalse;

returntrue;

}

friendostream&operator<<(ostream&output,constString&s)

{

if(s.Str!

=NULL)

output<

returnoutput;

}

};

template

classArray

{

private:

Ta[n];

public:

intsearch(Tkey)

{

for(inti=0;i

if(a[i]==key)

returni;

return-1;

}

voiddisp()

{

for(inti=0;i

cout<

cout<

}

Array(Ta[])

{

for(inti=0;i

this->a[i]=a[i];

}

};

voidmain()

{

floatf[]={1.2,2.3,7.7,4,3,4,2.3};

Arraya1(f);

cout<

Stringa[6]={"a","abc","ABC","abcd"};

Arraya2(a);

cout<

}

3.完善本章的Student类模板,使之可以添加,删除,查询学生记录,对学生成绩进行排序。

#include

#include

usingnamespacestd;

classString

{

private:

char*Str;

intlen;

public:

String(intn=0)

{

Str=NULL;

len=n;

}

String(constchar*p)

{

len=strlen(p);

Str=NULL;

if(len!

=0)

{

Str=newchar[len+1];

strcpy(Str,p);

}

}

String(String&r)

{

len=r.len;

if(len>0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1