c模板格式及应用习题答案Word文件下载.docx
- 文档编号:17443010
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:11
- 大小:18.10KB
c模板格式及应用习题答案Word文件下载.docx
《c模板格式及应用习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《c模板格式及应用习题答案Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
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();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模板 格式 应用 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)