国家二级C++机试(模板)模拟试卷5
国家二级(C语言)机试模拟试卷123(题后含答案及解析)

国家二级(C语言)机试模拟试卷123(题后含答案及解析)题型有:1. 选择题 2. 程序填空题 3. 程序修改题 4. 程序设计题选择题1.在关系代数运算中,有5种基本运算,它们是( )。
A.并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)B.并(∪)、差(-)、交(∩)、投影(π)和选择(σ)C.并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)D.并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)正确答案:D解析:并、差、笛卡儿积、投影和选择是5种基本的运算,其他运算即交、连接和除,均可以通过5种基本的运算来表达。
2.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。
A.外模式/模式B.内模式/外模式C.模式/内模式D.内模式/模式正确答案:A解析:数据库有两层映像,即外模式/模式和模式/内模式映像。
模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。
3.下列关于线性链表的描述中,正确的是( )。
Ⅰ、只含有一个指针域来存放下一个元素地址Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)Ⅲ、结点由两部分组成:数据域和指针域。
A.仅Ⅰ、ⅡB.仅Ⅰ、ⅢC.仅Ⅱ、ⅢD.全部正确答案:D解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。
其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
4.下面关于数据库三级模式结构的叙述中,正确的是( )。
A.内模式可以有多个,外模式和模式只有一个B.外模式可以有多个,内模式和模式只有一个C.内模式只有一个,模式和外模式可以有多个D.模式只有一个,外模式和内模式可以有多个正确答案:B解析:数据库的三级模式结构是指数据库系统的外模式、模式和内模式。
国家二级ACCESS机试选择题数据库基础知识模拟试卷5_真题含答案与解析)-交互57

国家二级ACCESS机试选择题(数据库基础知识)模拟试卷5(总分52, 做题时间90分钟)1. 选择题1.数据访问页可以简单地认为就是一个SSS_SINGLE_SELA 网页B 数据库文件C Word文件D 子表该题您未回答:х该问题分值: 2答案:A解析:数据访问页对象是ACCESS2003版本中用来将ACCESS数据库中的数据发布到网络上的数据库对象,不仅能发布数据,合法用户也能通过数据访问页对数据进行编辑。
数据访问页就是网页,格式编码为HTML,即超文本标记语言。
2.下列关于Access数据流特点的叙述中,错误的是SSS_SINGLE_SELA 可以支持Internet/Intranet应用B 可以保存多种数据类型的数据,包括多媒体数据C 可以通过编写应用程序来操作数据库的数据D 可以作为网状型数据库支持客户机/服务器应用系统该题您未回答:х该问题分值: 2答案:A解析:本题考查ACCESS数据库的基本特点。
ACCESS数据库的主要特点:能够利用各种图例快速获得数据;利用报表工具快速生成美观的数据报表;采用0LE技术,能方便的创建和编辑多媒体数据库。
支持ODBC标准的SQL数据库的数据;设计过程自动化,具有较好的集成开发功能;提供了断点设置、单步执行等调试功能;Internet/Intranet集成。
3.常见的数据模型有3种,它们是SSS_SINGLE_SELA 网状、关系和语义B 层次、关系和网状C 环状、层次和关系D 字段名、字段类型和记录该题您未回答:х该问题分值: 2答案:B解析:本题考查数据库的基本知识。
常见的数据模型共有三种,分别是层次模型、网状模型和关系模型,目前最普遍应用的是关系模型。
此外,今年发展的面向对象模型也逐渐成为主流数据模型。
4.用二维表来表示实体及实体之间联系的数据模型是SSS_SINGLE_SELA 实体一联系模型B 层次模型C 网状模型D 关系模型该题您未回答:х该问题分值: 2答案:D解析:本题考查数据模型的知识。
云南省计算机等级考试(二级C)模拟试卷试题五

云南省计算机等级考试(二级C)模拟试卷试题五第一卷第一部分:综合基础知识(共30分,每项1分)1. 在下列设备中,不能作为微型计算机的输出设备的是____。
A.打印机B.显示器C.绘图仪D.键盘2. 二进制数101110转换为等值的八进制数是____。
A.45B.56C.67D.783. 微型计算机中,普遍使用的字符编码是____。
A.补码B.原码C.ASCII码D.汉字编码4. 计算机软件系统一般包括____。
A.系统软件和字处理软件B.系统软件和应用软件C.管理软件和应用软件D.科学计算软件和应用软件5. 最基础最重要的系统软件是____。
A.应用软件包B.文字处理软件C.语言处理程序D.操作系统6. 微处理器的字长、主频、ALU结构以及____是影响其处理速度的重要因素。
A.有无中断处理B.是否程序控制C.有无DMA功能D.有无CaChe存储器7. 微机中MHz的意思是____。
A.内存的单位B.外存的单位C.主频的单位D.速度的单位8. 计算机“病毒”传播的基本媒质是____。
A.人手接触B.软磁盘C.内部存储器D.电源9. CPU的中文名称是____。
A.寄存器B.控制器C.中央处理器D.只读存储器10. 文件型病毒传染的对象主要是____类型文件A..DBFB..WPS和.EXED..EXE和.WPS11. 把存储器、微处理器、I/O接口集成在同一块芯片上构成的具有完整的运行功能的微型计算机,称为____。
A.微计算机系统B.微计算机C.单片计算机系统D.单片微计算机12. 关于硬件系统和软件系统的概念,下列叙述不正确的是____。
A.计算机硬件系统的基本功能是接受计算机程序,并在程序控制下完成数据输入和数据输出任务B.软件系统建立在硬件系统的基础上,它使硬件功能得以充分发挥,并为用户提供一个操作方便、工作轻松的环境C.没有装配软件系统的计算机不能做任何工作,没有实际的使用价值D.一台计算机只要装入系统软件后,即可进行文字处理或数据处理工作13. 利用一条传输线路传送多路信号的技术是____。
国家二级C%2b%2b机试(C%2b%2b流)模拟试卷5.doc

国家二级C++机试(C++流)模拟试卷5控制面板全部题型1.选择题答题卡1A BCD 2ABCD10分卷:试满选择题3ABCD 4A B C试题5 ABCD1.在语句cin»data:中,cin )。
6 ABCDA. C++的关键字7 ABCD答题120 时分限:钟B.类名C.对象名D.函数名8 ABCD9ABCD剩余时间:调整字号:□正确答案:c解析:此题考查的是预定义流对象。
C++有4个预定义的流对象:cin 一标准输入:cout 一标准输出;Cerr —标准出错信息输出:clog-带缓冲的标准出错信息输出。
10 ABCD12 14 16 1820 2.下列有关C++流的叙述中,错误的是()。
调整背 A. C++操作符setw设置的输出宽度永久有效京: B. C++操作符cndl可以实现输出的叵I车换行C.处理文件I / O时,要包含头文件fstreamD.进行输入操作时,eof()函数用于检测是否到达文件尾正确答案:A解析:此题考查的是C++流。
C++操作符setw()的作用是设置输入输出宽度,且只对当前一次有效,并非永久有效,故选项A叙述错误。
3.下列关于C++流的描述中,错误的是()。
A.cout»7V表达式可输出字符AB.eof()函数可以检测是否到达文件11A BCD 12A BCD 13A BCD 14ABCI) 15 ABCD 16ABCD 17ABCD 18A BCD 19A BCD 20ABCD 21ABCD 22ABCDC.对磁盘文件进行流操作时,必须包含头文件fstreamD.以ios_basc: : out模式打开的文件不存在时,将自动建立一个新文祎正确答案:A解析:cout是一个标准输出流对象。
>>称之为提取运算符,它的功能是从输入流中提取数据赋值给一个变量。
vv为插入运算符,其功能是把表达式的值插入到输出流中。
当系统执行cout«x操作时,首先根据x值的类型调用相应的插入运算符重载器函数,把x的值传送给对应的形参,接着执行函数体,把x的值输出到显示器屏幕上,在当前屏幕光标位置处显示出来,然后返回ostream流,以便继续使用插入运算符输出下一个表达式的值。
国家二级C语言机试(数据结构与算法)模拟试卷5(题后含答案及解析)

国家二级C语言机试(数据结构与算法)模拟试卷5(题后含答案及解析)题型有:1. 选择题选择题1.设二叉树共有375个结点,其中度为2的结点有187个。
则度为1的结点个数是A.0B.1C.188D.不可能有这样的二叉树正确答案:A解析:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。
二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
本题中,度为2的结点有187个,叶子结点应该有187+1=188个,度为1的结点个数=375-187-188=0。
知识模块:数据结构与算法2.在带链队列中,经过一系列正常的操作后,如果front=rear,则队列中的元素个数为A.0或1B.0C.1D.队列满正确答案:A解析:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。
进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列的链式存储也称为链队列。
为了便于操作,可给链队列添加1个头结点,并令头指针指向头结点。
队列为空的判断条件是头指针和尾指针的值相同,且均指向头结点。
当队列为空(0)或1时,front=rear。
知识模块:数据结构与算法3.设一棵树的度为3,其中没有度为2的结点,且叶子结点数为5。
该树中度为3的结点数为A.1B.2C.3D.不可能有这样的树正确答案:B解析:树的度是指一棵树中,最大的结点的度称为树的度。
本题中树的度为3,那么树中最少有一个结点的度为3。
而树中没有度为2的结点,叶子结点数为5,度为1的结点下面只有一个叶子结点。
因此,该树中含2个度为3的结点满足题目要求。
知识模块:数据结构与算法4.设二叉树共有500个结点,其中叶子结点有250个。
国家二级ACCESS机试选择题(公共基础知识)模拟试卷5(题后含答案及解析)

国家二级ACCESS机试选择题(公共基础知识)模拟试卷5(题后含答案及解析)题型有:1. 选择题选择题1.对软件系统总体结构图,下面描述中错误的是( )。
A.深度等于控制的层数B.扇入是一个模块直接调用的其他模块数C.扇出是一个模块直接调用的其他模块数D.原子模块一定是结构图中位于叶子节点的模块正确答案:B解析:与结构图有关的术语如下:知识模块:公共基础知识2.某系统结构图如下图所示该系统结构图的深度是( )。
A.1B.2C.3D.4正确答案:D解析:深度表示控制的层数。
本题中,“某系统”为第1层,“功能1、功能2…功能n”为第二层,“功能2.1、功能2.2、功能2.3、功能n.1、功能n.2”为第3层,“功能2.2.1、功能2.2.2”为第4层,共4层,故深度为4。
知识模块:公共基础知识3.某系统结构图如下图所示(图中n≥5)该系统结构图的宽度是( )。
A.nB.3C.2D.1正确答案:A解析:宽度指整体控制跨度(横向最大模块数)的表示。
本题中第1层有1个模块,第二层有n个模块(注意n≥5),第3层有5个模块,故宽度为n。
知识模块:公共基础知识4.某系统结构图如下图所示:该系统结构图的最大扇人数是( )。
A.0B.1C.2D.3正确答案:C解析:扇人是指调用一个给定模块的模块个数。
本题中,模块“功能3.1”被“功能2.3”和“功能3”2个上级模块调用,其余模块都是被一个上级模块调用,故最大扇人数是2。
知识模块:公共基础知识5.某系统结构图如下图所示,该系统结构图的最大扇入数是( )。
A.1B.2C.3D.n正确答案:D解析:扇入是指调用一个给定模块的模块个数。
本题中需要注意的是两个省略号的位置,第一个省略号表示第二层有n个模块,第二个省略号表示模块“功能n.1”被第二层的n个模块调用,故最大扇人数是n。
知识模块:公共基础知识6.某系统总体结构如下图所示该系统结构图的最大扇出数是( )。
A.2B.5C.3D.1正确答案:C解析:扇出指一个模块直接调用的其他模块数。
国家二级C++机试(基本控制结构、数组、指针与引用)模拟试卷5

国家二级C++机试(基本控制结构、数组、指针与引用)模拟试卷5(总分:68.00,做题时间:90分钟)一、选择题(总题数:34,分数:68.00)1.有如下程序: #inc1ude<iostream> using namespace std; int main() { char str[100],*p; cout <<"Please input a string:"; cin;str; p==str; for(int i=0; *p!='\0'; p++,i++); cout<<"i"<<end1; retum 0; } 运行这个程序时,若输入字符串为: abcdefg abcd 则输出结果是( )。
(分数:2.00)A.7 √B.12C.13D.100解析:解析:此题考查的是默认输入格式。
本题输入数据类型为char,因此输入的数据是“从第…个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abcd,其中abcdefg后有空格。
所以输入后str中的字符串为“abcdefg”;主函数中接下来for语句的作用是计算字符串p的长度,故最终输出字符串“abcdefg”的长度7。
2.if语句的语法格式可描述为:格式1:if(<条件>)<语句>或格式2:if(<条件>)<语句1>else <语句2>关于上面的语法格式,下列表述中错误的是( )。
(分数:2.00)A.<条件>部分可以是一个if语句,例如if(if(a==0)…)…√B.<语句>部分可以是一个if语句,例如if(…)if(…)…C.如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变D.<语句>部分可以是一个循环语句,例如if(…)while(…)…解析:解析:此题考查的是if语句。
If语句的条件部分是一个表达式而不是语句,因此选项A叙述错误。
国家二级C语言机试(操作题)模拟试卷365(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷365(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。
操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵: 1 2 3 计算结果为7 4 1 4 5 6 8 5 2 7 8 9 9 6 3 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 43 void fun(int(*t)[N])4 { int j,r[N];5 for(j=0;j<N;j++)r[j]=t[0][j];6 for(j=0;j<N;j++)7 /**********found**********/8 t[0][N-j-1]=t[j][__1__];9 for(j=0;j<N;j++)10 t[j][0]=t[N-1][j];11 /**********found**********/12 for(j=N-1;j>=0;__2__)13 t[N-1][N-1-j]=t[j][N-1];14 for(j=N-1;j>=0;j--)15 /**********found**********/16 t[j][N-1]=r[__3__];17 }18 main( )19 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;20 printf(‘‘\nThe original array:\n’’);21 for(2=0;i<N;i++)22 {for(j=0;j<N;j++)printf(‘‘%2d”,t[i][j]);23 printf(‘‘\n’’);24 }25 fun(t);26 printf(‘‘\nThe result is:\n’’);27 for(i=0;i<N;i++)28 { for(j=0;j<N;j++)printf(‘‘%2d’’,t[i][j]);29 printf(‘‘\n’’);30 }31 }正确答案:(1)0 (2)j-- (3)j解析:第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N-j-1]”,故第一空处应为“0”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家二级C++机试(模板)模拟试卷5(总分:60.00,做题时间:90分钟)一、选择题(总题数:30,分数:60.00)1.下列关于模板的叙述中,错误的是( )。
(分数:2.00)A.模板声明中的第一个符号总是关键字temp1ateB.在模板声明中用<和>括起来的部分是模板的形参表C.类模板不能有数据成员√D.在一定条件下函数模板的实参可以省略解析:解析:此题考查模板的概念。
模板的一般说明形式如下:temp1ate类型形参表函数返回值类型函数名(形参表){函数体},所以选项A、B正确。
函数模板的实参在一定条件下是可以省略的,所以选项C错误。
2.有如下函数模板定义: temp1ate<c1ass T> T func(T x,T y){return x*x+y*y;} 在下列对func的调用中,错误的是( )。
(分数:2.00)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的调用中正确的是( )。
(分数:2.00)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.关于在调用模板函数时模板实参的使用,下列表述正确的是( )。
(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略√解析:解析:此题考查的是模板实参的省略。
模板实参在以下集中情况中不能省略:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参表中;函数模板含有常规形参。
5.有如下函数模板: temp1ate<c1ass T>T square(T x){return x*x;) 其中T是( )。
(分数:2.00)A.函数形参B.函数实参C.模板形参√D.模板实参解析:解析:此题考查的是函数模板。
声明一个函数模板的格式是:temp1ate<模板形参表声明>函数声明,{函数体}其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。
6.下列函数模版中的定义中,合法的是( )。
(分数:2.00)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参数名;类型修饰参数名。
7.C++中的模板包括( )。
(分数:2.00)A.对象模板和函数模板B.对象模板和类模板C.函数模板和类模板√D.变量模板和对象模板解析:解析:此题考查的是模板。
在C++语言中,模板有两类:函数模板和类模板。
8.下列有关模板的叙述中,正确的是( )。
(分数:2.00)A.函数模板不能含有常规形参B.函数模板的一个实例就是’个函数定义√C.类模板的成员函数不能是模板函数D.用类模板定义对象时,绝对不能省略模板实参解析:解析:此题考查的是模板的概念。
函数模板可以含有常规形参;函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数;在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。
9.下面是一个模板声明的开始部分: temp1ute<typename T> double__ 由此可知( )。
(分数:2.00)A.这可能是一个函数模板的声明√B.这可能是一个类模板的声明C.这既可能是一个函数模板的声明,也可能是一个类模板的声明D.这肯定是一个错误的模板声明解析:解析:此题考查的是函数模板的声明。
声明一个函数模板的格式是:temp1ate<模板形参表声明>函数声明;定义类模板的格式是:temp1ate<类型形参表> class<类模板名>{};。
10.下列关于模板的叙述中,错误的是( )。
(分数:2.00)A.调用模版函数时,在一定条件下可以省略模板实参B.可以用int、double这样的类型修饰符来声明模版参数C.模板声明中的关键字c1ass都可以用关键字typename替代√D.模板的形参表中可以有多个参数解析:解析:在声明模板参数是,关键字typename和class是可以互换的,两者是等价的。
但选项C中说的是模版声明,在类模板声明中,替换可能会引起麻烦。
11.下列关于函数模板的描述中,错误的是( )。
(分数:2.00)A.从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B.对于常规参数所对应的模板实参,任何情况下都不能省略C.虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D.模板参数表不能为空√解析:解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若十参数,则模板实参表中的那几个参数可以省略。
12.下列关于模板形参的描述中,错误的是( )。
(分数:2.00)A.模板形参表必须在关键字temp1ate之后B.模板形参表必须用括弧()括起来√C.可以用c1ass修饰模板形参D.可以用typename修饰模板形参解析:解析:声明一个函数模板的格式是:temp1ate<<模板形参表声明>><函数声明>,其中的<模板形参表声明>是由一个或多个<模板形参>组成(如果是多个,需要用逗号隔开)。
每个<模板形参>具有下面的几种形式:①typename<参数表>②class<参数名>③<类型修饰><参数名>由此可知,模板形参表必须用括弧◇括起来,而不是(),所以选项B)为正确答案。
13.下列关于类模板的描述中,错误的是( )。
(分数:2.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数√解析:解析:类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数的参数和返回值的类型)。
一个类模板的格式是:temp1ate<<模板形参表声明>><类声明>,<模板形参表声明>是由一个或多个模板形参组成。
在定义类模板时,可以为模板形参表声明的最后若干个参数设置默认值。
14.下列关于模板的叙述中,正确的是( )。
(分数:2.00)A.如果一个类中存在纯虚函数,这个类就是类模板B.函数模板不能有形式参数表C.类模板是一种参数化类型的类,是类的生成器√D.类模板中不能包含构造函数解析:解析:对于函数模板,数据类型本身成了它的参数,是一种参数化类型的函数。
对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。
15.有函数模板声明和一些变量定义如下: temp1ate<c1ass T1, c1ass T2, c1ass T3>T1 sum(T2,T3); double d1,d2; 则下列调用中,错误的是( )。
(分数:2.00)A.sum<double, double, double>(d1, d2);B.sum<double, double>(d1, d2);C.sum<double>(d1,d2);D.sum(d1,d2); √解析:解析:虚拟类型参数T1没有出现在模板函数的形参表中,因此在调用时不可能从模板函数的实参表中获得相应的信息,因此T1无法省略。
而在选项D)中省略了。
16.下列关于函数模板的描述中,正确的是( )。
(分数:2.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数√解析:解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。
数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。
17.有如下函数模板定义: temp1ate<typename T1,Typename T2> T1 Fun(T2 n){return n*5.0;} 若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。
(分数:2.00)A.FUN(9)B.FUN<9>C.FUN<double>[9] √D.FUN<9>(double)解析:解析:根据函数模板的定义,在选项C的调用中,把double类型传递给T1,int型传递给T2。
18.下列关于模板的描述中,错误的是( )。
(分数:2.00)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字typename声明√解析:解析:同一模板的声明和定义中,模板形参的名字不必相同。