c模板格式及应用习题答案Word文件下载.docx

上传人:b****6 文档编号:17443010 上传时间:2022-12-01 格式:DOCX 页数:11 大小:18.10KB
下载 相关 举报
c模板格式及应用习题答案Word文件下载.docx_第1页
第1页 / 共11页
c模板格式及应用习题答案Word文件下载.docx_第2页
第2页 / 共11页
c模板格式及应用习题答案Word文件下载.docx_第3页
第3页 / 共11页
c模板格式及应用习题答案Word文件下载.docx_第4页
第4页 / 共11页
c模板格式及应用习题答案Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c模板格式及应用习题答案Word文件下载.docx

《c模板格式及应用习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《c模板格式及应用习题答案Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

c模板格式及应用习题答案Word文件下载.docx

C.一个类定义中,只要有一个函数模板,则这个类是类模板

D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

3.2下列的模板说明中,正确的是(D)。

A.template<

typenameT1,T2>

B.template<

classT1,T2>

C.template<

classT1,classT2>

D.template<

typenameT1,typenameT2>

3.3函数模板定义如下:

template<

typenameT>

Max(Ta,Tb,T&

c){c=a+b;

}

下列选项正确的是(B)。

A.intx,y;

charz;

B.doublex,y,z;

Max(x,y,z);

Max(x,y,z);

C.intx,y;

floatz;

D.floatx;

doubley,z;

3.4下列有关模板的描述错误的是(D)。

A.模板把数据类型作为一个设计参数,称为参数化程序设计。

B.使用时,模板参数与函数参数相同,是按位置而不是名称对应的。

C.模板参数表中可以有类型参数和非类型参数。

D.类模板与模板类是同一个概念。

3.5类模板的使用实际上是将类模板实例化成一个(C)。

A.函数B.对象C.类D.抽象类

3.6类模板的模板参数(D)。

A.只能作为数据成员的类型B.只可作为成员函数的返回类型

C.只可作为成员函数的参数类型D.以上三种均可

3.7类模板的实例化(A)。

A.在编译时进行B.属于动态联编

C.在运行时进行D.在连接时进行

3.8以下类模板定义正确的为(A)。

A.template<

classT,inti=0>

B.template<

classT,classinti>

C.template<

classT,typenameT>

D.template<

4.编程题

4.1设计一个函数模板,其中包括数据成员Ta[n]以及对其进行排序的成员函数sort(),模板参数T可实例化成字符串。

#include<

iostream>

string>

usingnamespacestd;

voidSort(T*a,intn){

inti,j;

Tt;

for(i=0;

i<

n-1;

i++)

for(j=0;

j<

n-i-1;

j++)

if(a[j]>

a[j+1])

{t=a[j];

a[j]=a[j+1];

a[j+1]=t;

voidPrint(T*a,intn){

inti;

n;

cout<

<

a[i]<

"

;

cout<

endl;

intmain(){

stringStr[10]={"

Zhang"

"

Li"

Wang"

Qian"

Zhao"

Wu"

Xu"

Tang"

Shen"

Liang"

};

intInt[8]={20,12,0,-5,9,-18,6,11};

doubleDou[7]={3.07,8.12,-0.45,6,10,-9,7.29};

Sort<

(Str,10);

int>

(Int,8);

double>

(Dou,7);

Print(Str,10);

Print(Int,8);

Print(Dou,7);

return0;

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

typenameT,intn>

classA{

intsize;

T*element;

public:

A();

~A();

intSearch(T);

voidSetElement(intindex,constT&

value);

A<

T,n>

:

A(){

size=n>

1?

n:

1;

element=newT[size];

~A(){

delete[]element;

intA<

Search(Tt){

size;

if(element[i]==t)

returni;

return-1;

voidA<

SetElement(intindex,constT&

value){

element[index]=value;

A<

int,5>

intAry;

//用int实例化,建立模板类对象

double,10>

douAry;

//用double实例化,建立模板类对象

5;

intAry.SetElement(i,i+3);

10;

douAry.SetElement(i,(i+i)*0.35);

i=intAry.Search(7);

if(i>

=0)cout<

i=douAry.Search(0.7);

4.3设计一个单向链表类模板,节点数据域中数据从小到大排列,并设计插入、删除节点的成员函数。

classList;

classNode{

Tinfo;

//数据域

Node<

T>

*link;

//指针域

Node();

//生成头结点的构造函数

Node(constT&

data);

//生成一般结点的构造函数

friendclassList<

Node<

Node(){link=NULL;

Node(constT&

data){

info=data;

link=NULL;

//定义链表类

classList{

*head;

//链表头指针和尾指针

List();

//构造函数,生成头结点(空链表)

~List();

//析构函数

voidMakeEmpty();

//清空一个链表,只余表头结点

*Find(Tdata);

//搜索数据域与data相同的结点,返回该结点的地址

voidPrintList();

//打印链表的数据域

voidInsertOrder(Node<

*p);

//按升序生成链表

*CreatNode(Tdata);

//创建一个结点(孤立结点)

*DeleteNode(Node<

//删除指定结点

List<

List(){

head=newNode<

(-9999);

//头结点,最小的数据从小到大插入

~List(){

MakeEmpty();

deletehead;

voidList<

MakeEmpty(){

*tempP;

while(head->

link!

=NULL){

tempP=head->

link;

head->

link=tempP->

//把头结点后的第一个节点从链中脱离

deletetempP;

//删除(释放)脱离下来的结点

}

*List<

Find(Tdata){

*tempP=head->

while(tempP!

=NULL&

&

tempP->

info!

=data)tempP=tempP->

returntempP;

//搜索成功返回该结点地址,不成功返回NULL

PrintList(){

info<

'

\t'

tempP=tempP->

InsertOrder(Node<

*p){

*tempP=head,*tempQ=head;

//tempQ指向tempP前面的一个节点

if(p->

info)break;

//找第一个比插入结点大的结点,由tempP指向

tempQ=tempP;

p->

link=tempP;

tempQ->

link=p;

CreatNode(Tdata){//建立新节点

*tempP=newNode<

(data);

DeleteNode(Node<

link,*tempQ=head,*tempC;

tempP!

=p){

tempC=tempP;

returntempC;

*P1;

List<

list1;

inta[10]={20,12,0,-5,9,-18,6,11,5,3},i,j;

i++){

P1=list1.CreatNode(a[i]);

list1.InsertOrder(P1);

list1.PrintList();

请输入一个要求删除的整数"

cin>

>

j;

P1=list1.Find(j);

if(P1!

P1=list1.DeleteNode(P1);

deleteP1;

list1.PrintList();

elsecout<

未找到"

请输入一个要求插入的整数"

P1=list1.CreatNode(j);

list1.InsertOrder(P1);

list1.MakeEmpty();

//清空list1

4.4为单链表类模板增加一个复制构造函数和赋值运算符(=)。

在上题基础上,List类增加一个复制构造函数和赋值运算符(=)

List(List&

l){

//现建立头结点

*tempP=l.head->

link,*tempC;

tempC=CreatNode(tempP->

info);

InsertAfter(tempC);

operator=(List&

//先释放原来链表的数据结点

return*this;

list1,list2;

list2=list1;

list2.PrintList();

list3=list1;

list3.PrintList();

list2=list3=list1;

list2.MakeEmpty();

list3.MakeEmpty();

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

当前位置:首页 > 高中教育 > 英语

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

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