首页 > 全部 > 二级C++ > 国家二级C++机试(模板)模拟试卷5

国家二级C++机试(模板)模拟试卷5

本单篇文档共8072字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C++ 章节练习 1698人下载
价格: 1.00 原价:¥9.00
收藏

国家二级C++机试(模板)模拟试卷5

选择题

1.下列关于模板的叙述中,错误的是( )。(C)

A. 模板声明中的第一个符号总是关键字temp1ate

B. 在模板声明中用<和>括起来的部分是模板的形参表

C. 类模板不能有数据成员

D. 在一定条件下函数模板的实参可以省略

解析:此题考查模板的概念。模板的一般说明形式如下:temp1ate类型形参表函数返回值类型函数名(形参表){函数体},所以选项A、B正确。函数模板的实参在一定条件下是可以省略的,所以选项C错误。

2.有如下函数模板定义:

temp1ate<c1ass T>

T func(T x,T y){return x*x+y*y;}

在下列对func的调用中,错误的是( )。(C)

A. func(3,5);

B. func(3.0,5.5);

C. func(3,5.5);

D. func<int>(3,5.5);

解析:此题考查的是函数模板的使用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题C选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误;A、B选项正确;D选项中,函数名后的<int>是模板实参表,编译系统会将double型的形参“5.5”自动转化成int类型。

3.有如下函数模板:

temp1ate<typename T’typename U>

T cast(Uu){ return u;}

其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是( )。(D)

A. cast(i),

B. cast<>(i);

C. cast<char*,int>(i);

D. cast<double,int>(i);

解析:此题考查的是模板函数的调用。本题中cast()函数的实参i只能确定模板参数U的类型为int,而不能确定另外一个模板参数T,故选项A、B错误;C++语言不允许隐式地将int转化为char*,故选项C错误。

4.有如下函数模板:

temp1ate<c1ass T>T square(T x){return x*x;)

其中T是( )。(C)

A. 函数形参

B. 函数实参

C. 模板形参

D. 模板实参

解析:此题考查的是函数模板。声明一个函数模板的格式是:temp1ate<模板形参表声明>函数声明,{函数体}其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。

5.下列函数模版中的定义中,合法的是( )。(A)

A. temp1ate <typename T>T abs(T x){return x<0?—x:x;)

B. temp1ate c1ass< T>T abs(T x){return x<0?—x:x;}

C. temp1ate T<c1ass T> abs(T x){return x<0?—x:x;}

D. temp1ate T abs(T x){retum x<0?—x: x;)

解析:此题考查的是函数模板。声明一个函数模板的格式是:temp1ate<模板形参表声明>函数声明,其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:t)rpename参数名;class参数名;类型修饰参数名。

6.C++中的模板包括( )。(C)

A. 对象模板和函数模板

B. 对象模板和类模板

C. 函数模板和类模板

D. 变量模板和对象模板

解析:此题考查的是模板。在C++语言中,模板有两类:函数模板和类模板。

7.下列有关模板的叙述中,正确的是( )。(B)

A. 函数模板不能含有常规形参

B. 函数模板的一个实例就是’个函数定义

C. 类模板的成员函数不能是模板函数

D. 用类模板定义对象时,绝对不能省略模板实参

解析:此题考查的是模板的概念。函数模板可以含有常规形参;函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数;在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。

8.下面是一个模板声明的开始部分:

temp1ute<typename T> double__

由此可知( )。(A)

A. 这可能是一个函数模板的声明

B. 这可能是一个类模板的声明

C. 这既可能是一个函数模板的声明,也可能是一个类模板的声明

D. 这肯定是一个错误的模板声明

解析:此题考查的是函数模板的声明。声明一个函数模板的格式是:temp1ate<模板形参表声明>函数声明;定义类模板的格式是:temp1ate<类型形参表> class<类模板名>{};。

9.下列关于模板的叙述中,错误的是( )。(C)

A. 调用模版函数时,在一定条件下可以省略模板实参

B. 可以用int、double这样的类型修饰符来声明模版参数

C. 模板声明中的关键字c1ass都可以用关键字typename替代

D. 模板的形参表中可以有多个参数

解析:在声明模板参数是,关键字typename和class是可以互换的,两者是等价的。但选项C中说的是模版声明,在类模板声明中,替换可能会引起麻烦。

10.下列关于函数模板的描述中,错误的是( )。(D)

A. 从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准

B. 对于常规参数所对应的模板实参,任何情况下都不能省略

C. 虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

D. 模板参数表不能为空

解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若十参数,则模板实参表中的那几个参数可以省略。

11.下列关于类模板的描述中,错误的是( )。(D)

A. 类模板的成员函数都是模板函数

B. 可以为类模板参数设置默认值

C. 类模板描述了一组类

D. 类模板中只允许有一个类型参数

解析:类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数的参数和返回值的类型)。一个类模板的格式是:temp1ate<<模板形参表声明>><类声明>,<模板形参表声明>是由一个或多个模板形参组成。在定义类模板时,可以为模板形参表声明的最后若干个参数设置默认值。

12.下列关于模板的叙述中,正确的是( )。(C)

A. 如果一个类中存在纯虚函数,这个类就是类模板

B. 函数模板不能有形式参数表

C. 类模板是一种参数化类型的类,是类的生成器

D. 类模板中不能包含构造函数

解析:对于函数模板,数据类

本文档预览:3600字符,共8072字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C++机试(模板)模拟试卷5

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号