[计算机类试卷]国家二级C++机试(模板)模拟试卷6及答案与解析.doc

上传人:confusegate185 文档编号:497705 上传时间:2018-11-30 格式:DOC 页数:17 大小:49.50KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(模板)模拟试卷6及答案与解析.doc_第1页
第1页 / 共17页
[计算机类试卷]国家二级C++机试(模板)模拟试卷6及答案与解析.doc_第2页
第2页 / 共17页
[计算机类试卷]国家二级C++机试(模板)模拟试卷6及答案与解析.doc_第3页
第3页 / 共17页
[计算机类试卷]国家二级C++机试(模板)模拟试卷6及答案与解析.doc_第4页
第4页 / 共17页
[计算机类试卷]国家二级C++机试(模板)模拟试卷6及答案与解析.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、国家二级 C+机试(模板)模拟试卷 6及答案与解析 一、选择题 1 下列关于模板的叙述中,错误的是 ( )。 ( A)模板声明中的第一个符号总是关键字 template ( B)在模板声明中用 括起来的部分是模板的形参表 ( C)类模板不能有数据成员 ( D)在一定条件下函数模板的实参可以省略 2 有如下函数模板定义: template T func(T x, T y)return x*x+y*y; 在下列对 func的调用中,错误的是 ( )。 ( A) func(3, 5); ( B) func(3 0, 5 5); ( C) func(3, 5 5); ( D) func(3, 5 5)

2、; 3 有如下函数模板: template T cast(U u)return u; 其功能是将 U类型数据转换为 T类型数据。已知 i为 int型变量,下列对模板函数 cast的调用中正确的是 ( )。 ( A) cast(i); ( B) cast ( D) 27 有如下模板声明: templateclass A; 下列声明中,与上述声明不等价的是 ( )。 ( A) templateclass A; ( B) templateclass A; ( C) templateclass A; ( D) templateclass A; 28 若 MyTemp是一个只有一个虚拟类型 参数的类模板

3、,且有如下语句序列 MyTempp2; MyTempp32; 编译系统在处理上面的语句序列时,所生成的模板 MyTemp的实例的个数是( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 0 29 下列关于模板的叙述中,错误的是 ( )。 ( A)调用模板函数时,有时可以省略模板实参 ( B)函数模板的每个实例就是一个函数定义 ( C)类模板的每个实例就是一个类定义 ( D)类模板的实例是一个类对象 30 下列类模板的定义中语法格式错误的是 ( )。 ( A) templateclass Buffer * ; ( B) templateclass Buffer * ; ( C) tem

4、plateclass Buffer * ; ( D) templateclass Buffer * ; 国家二级 C+机试(模板)模拟试卷 6答案与解析 一、选择题 1 【正确答案】 C 【试题解 析】 此题考查模板的概念。模板的一般说明形式如下: template类型形参表函数返回值类型函数名 (形参表 )函数体 ,所以选项 A、 B正确。函数模板的实参在一定条件下是可以省略的,所以选项 C错误。 【知识模块】 模板 2 【正确答案】 C 【试题解析】 此题考查的是函数模板的使用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调

5、用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题 C选项中,编译系统从第一个参数 “3”获得 信息 “int”和从第二个参数获得信息 “double”两者矛盾,错误: A、 B选项正确; D选项中,函数名后的 是模板实参表,编译系统会将 double型的形参 “5 5”自动转化成 int类型。 【知识模块】 模板 3 【正确答案】 D 【试题解析】 此题考查的是模板函数的调用。本题中 cast()函数的实参 i只能确定模板参数 U的类型为 int,而不能确定另外一个模板参数 T,故选项 A、 B错误; C+语言不允许隐式地将 int转化为 char*,故选项 C错误。 【知识模

6、块】 模板 4 【正确答 案】 D 【试题解析】 此题考查的是模板实参的省略。模板实参在以下集中情况中不能省略:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参表中;函数模板含有常规形参。 【知识模块】 模板 5 【正确答案】 C 【试题解析】 此题考查的是函数模板。声明一个函数模板的格式是: template函数声明, 函数体 其中的 是由一个或多个“模板形参 ”组成的,每个 “模板形参 ”可具有以下几种形式: typename参数名;class参数名:类型修饰参数名。 【知识模块】 模板 6 【正确答案】 A 【试题解析

7、】 此题考查的是函数模板。声明一个函数模板的格式是: template函数声明,其中的 是由一个或多个 “模板形参 ”组成的,每个 “模板形参 ”可具有以下几种形式: typename参数名; class参数名;类型修饰参数名。 【知识模块】 模板 7 【正确答案】 C 【试题解析】 此题考查的是模板。在 C+语言中,模板有两类:函数模板和类模板。 【知识模块】 模板 8 【正确答案】 B 【试题解析】 此题考查的是模板的概念。函数模板可以含有常规形参:函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数:在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函

8、数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。 【知识模块】 模板 9 【正确答案】 A 【试题解析】 此题考查的是函数模板的声明。声明一个函数模板的格式是:template函数声明;定义类模板的格式 是: templateclass;。 【知识模块】 模板 10 【正确答案】 C 【试题解析】 在声明模板参数是,关键字 typename和 class是可以互换的,两者是等价的。但选项 C中说的是模版声明,在类模板声明中,替换可能会引起麻烦。 【知识模块】 模板 11 【正确答案】 D 【试题解析】 在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应

9、的实际参数,而且它们正好是参数表中最后的若干参数,则模板实参表中的那几个参 数可以省略。 【知识模块】 模板 12 【正确答案】 B 【试题解析】 声明一个函数模板的格式是: template函数声明 ,其中的 是由一个或多个 组成 (如果是多个,需要用逗号隔开 )。每个 具有下面的几种形式: typename class 由此可知,模板形参表必须用括弧 括起来,而不是 (),所以选项 B)为正确答案。 【知识模块】 模板 13 【正确答案】 D 【试题解析】 类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型 (成员的类型以及成员函数

10、的参数和返回值的类型 )。一个类模板的格式是: template, 是由一个或多个模板形参组成。在定义类模板时,可以为模板形参表声明的最后若干个参数设置默认值。 【知识模块】 模板 14 【正确答案】 C 【试题解析】 对于函数模板,数据类型本身成了它的参数,是一种参 数化类型的函数。对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。 【知识模块】 模板 15 【正确答案】 D 【试题解析】 虚拟类型参数 T1没有出现在模板函数的形参表中,因此在调用时不可能从模板函数的实参表中获得相应的信息,因此 T1无法省略。而在选项 D)中省略了。 【知识模块】 模板 16 【

11、正确答案】 D 【试题解析】 函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。 【知识模块】 模板 17 【正确答案】 C 【试题解析】 根据函数模板的定义,在选项 C的调用中,把 double类型传递给T1, int型传递给 T2。 【知识模块】 模板 18 【正确答案】 D 【试题解析】 同一模板的声明和定义中,模板形参的名字不必相同。每个模板类型形参前面必须带上关键字 typename class,每个非类型形参前面必须带上类型名字。 【知识模块】 模板 19 【正确答案】 B 【试题解

12、析】 由题目中函数 swap(a, b, 10)调用语句可知,在对函数模板 swap的声明语句中,应将第一、 _二个参数设为数组变量,第三个参数为整型变量。 【知识模块】 模板 20 【正确答案】 B 【试题解析】 定义函数模板或类模板时,开头的保留字是 template。 【知识模块】 模板 21 【正确答案】 C 【试题解析】 按照函数模板 mySwap的定义,变量 x和 v应该是同一类型,而在选项 C)的定义中变量 i1和 d1属于不同的数据类型。 【知识模块】 模板 22 【正确答案】 B 【试题解析】 此题考查了类模板的概念。在定义对象的过程中,系统会自动地根据需要生成相应的类定义,

13、这种依据类模板生成具体类的过程称为类模板的实例化。 【知识模块】 模板 23 【正确答案】 A 【试题解析】 此题考查的是 class和 typename两个关键字。关键字 class除了能用来定义类以外还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时typename与 class可以互换,但不能使用 typename来定义类;在模板形参表中除了可以用 typename和 class声明虚拟类型参数外,还可以使用普通 类型声明常规函数,故选项 c错误。 【知识模块】 模板 24 【正确答案】 D 【试题解析】 此题考查的是模板参数。模板参数是一种参数化的数据模型,在模板类或模板函数中,

14、只要使用数据类型的地方都能使用模板参数来代表一种未知的数据类型。所以,模板参数可以作为成员函数的局部变量类型。 【知识模块】 模板 25 【正确答案】 D 【试题解析】 第四个选项是定义类模板的,但是 class前面的 T是多余的。对于第二个选项,同一个类的对象相乘还是同一个类的对象,但是可能要考虑溢出的问题。 【知识模块】 模板 26 【正确答案】 C 【试题解析】 声明一个类模板的格式是: template。 【知识模块】 模板 27 【正确答案】 D 【试题解析】 在类模板中,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。声明一个类模板的格式是: template类声

15、明 , 是由一个或多个模板形参组成。对于本题来说,模板形参表中包括类型 T1和 T2两个类型参数,而在选项 D)中 T1说明其类型,而 T2没 有说明其类型,与题干中的模板说明不一致。 【知识模块】 模板 28 【正确答案】 C 【试题解析】 p2是一个 double型的 MyTemp, p32是一个 long型 MyTemp数组,其中包括两个元素。所以共有 3个 MyTemp的实例。 【知识模块】 模板 29 【正确答案】 D 【试题解析】 在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。类模板实例化所生成的每一个类定义就是相应类模板的一个实例。 【知识模 块】 模板 30 【正确答案】 D 【试题解析】 定义类模板的一般形式是: template class类名 类声明体 ; 模板的类型参数由关键字 class或关键字 typename及其后的标识符构成。在模板参数表中关键字 class和 typename的意义相同。 【知识模块】 模板

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

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1