版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(选择题)模拟试卷
第1套
一、选择题(本题共23题,每题1.0分,共23分。)
1、下列运算符不能重载为友元函数的是()。
A、二()()一>
B、+一++一一
C、><>=<=
D、+=一=*=/=
标准答案:A
知识点解析:关于运算符重载为友元函数有如下规定:①一般情况下,单目运算
符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运
算符“=、()、口、一〉''不能重载为类的友元函数v所以本题答案为A.
2、下列叙述中正确的是()。
A、栈是一种先进先出的线性表
B、队列是一种后进先出的线性表
C、栈与队列都是非线性结构
D、以上三种说法都不对
标准答案:
知识之解析D:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结
构。
3、设二叉树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,
lo则T中的叶子结点数为
A、8
B、7
C、6
D、5
标准答案:A
知识点解析:任意树的结点数等于树的总分叉数+1;树的总分叉数公式为:
1*4+2*2+3*1+4+1=15;因此,树的节点个数为16。树的总结点数公式为:总节点
数=4+2+l+l+x,便可以得到等式:4+2+1+l+x=16;x=8为叶子数。
4、有如下语句序列:charstr[10];cin>>str;当从键盘输入“Ilovethisgame
时,str中的字符串是()。
A、“Ilovethisgame”
B、“Ilovethi”
C、“Ilove”
D、T
标准答案:D
知识点解析:由于字符\0作为字符串的结束标志,所以当从键盘上输入“Hove
thisgame”时,只把字母I输入字符串sir。
5、若有以下程序:#include<iostream>usingnamespacestd:classTestClass
{public:voidwho()(cout<<,?lcstCiass,,<<endl;));class1'estClassl:public
TestClass{public:voidwho(){cout<<,,TestClassl,,<<endl;}};intmain()
{TestClass*p;TestClass1objl:p=&obj1;p->who():return0;}则该程序运
行后的输出结果是()。
A、TeatClassl
TestClass
C、0
D、无输出
标准答案:B
知识点解析:程序中的TesiClasl为TesiClass的派生类,主函数main中定义
TestClass对象*p,TestClass1对象objl,然后p引用objl,执行p->who()则是调
用基类中的who函数,输出TestClasso
6、结构化程序设计中,下面对got。语句使用描述正确的是
A、禁止使用goto语句
B、使用goto语句程序效率高
C、应避免滥用goto语句
D、goto语句确实一无是处
标准答案:C
知识点解析:滥用got。语句确实有害,应尽量避免;完全避免使用got。语句并非
是明智的方法,有些地方使用gol。语句会使程序流程更清楚、效率更高;争论的
焦点不应该放在是否取消got。语句,而应该放在用在什么程序结构上。
7、软件需求规格说明书的作用不包括()。
A、软件验收的依据
B、用户与开发人员对软件要做什么的共同理解
C、软件设计的依据
D、软件可行性研究的依据
标准答案:D
知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合
同;②开发人员进行设计和编程的依据;③软件工程项目验收的依据。
8、软件(程序)调试的任务是()。
A、诊断和改正程序中的错误
B、尽可能多地发现程序中的错误
C、发现并改正程序中的所有错误
D、确定程序中错误的性质
标准答案:A
知识点解析:在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即
排错)。程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测
试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试
工具去执行并找出错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开
发阶段。
9、层次型、网状型和关系型数据库划分原则是()。
A、记录长度
B、文件的大小
C、联系的复杂程度
D、数据之间的联系方式
标准答案:D
知识点解析:根据数据之间的联系方式,可以把数据库分为层次型、网状型和关系
型数据库,它们是根据数据之间的联系方式来划分的。
10、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C
的联系是()。
A、一对一
B、一对多
C、多对一
D、多对多
标准答案:B
知识点解析:由于B和C有——对应的联系,而A和R只问有一对多的联系•则
通过关系之间的传递,则A和C之间也是一对多的联系。
11、下面是一个模板声明的开始部分:templatedouble…由此可知()。
A、这可能是一个函数模板的声明
B、这可能是一个类模板的声明
C、这既可能是一个函数模板的声明,也可能是一个类模板的声明
D、这肯定是一个错误的模板声明
标准答案:A
知识点解析:本题考查函数模板和类模板的基础知识,从templatedouble这里就可
以看出这是一个函数模板的声明。
12、若有定义语句“inti=2,j=3;”,则表达式i/j的结果是()。
A、0
B、0.7
C、0.66667
D、0.66666667
标准答案:A
知识点解析:由于变量i、j都是整型变量,所以两者相除所得的商也是整型数
据。
13、设有课程关系模式:R(C#,Cn,T,TA)(其中,C#为课程号,Cn为课程名,
T为教师名,Ta为教师地址)并且假定不同课程号可以有相同的课程名,每个课程
号下只有一位任课教师,但每位教师可以有多门课程。关系R中对主属性的传递
依赖为
A、(C#,T)->Ta
B、C#->Cn,Cn->Ta
C、C#—T,T一Ta
D、C#一Tn
标准答案:C
知识点解析:R关系模式中,不同课程号可以对应相同的课程名而每个课程号下自
由一位任课教师,因此课程号和教师名为传递依赖、教师名和教师地址为传递依
赖,因此R对主属性的传递依赖为“C#TT,T-Ta”。
14、若PAT是一个类,则程序运行时,语句“PAT{*ad}[3];”调用PAT的构造函
数的次数是()。
A、0
B、1
C、2
D、3
标准答案:A
知识点解析:语句“PAT(*ad)[3『定义了含有3个元素的指向类PAT类型的指针数
组acL
15、下列关于this指针的叙述中,正确的是()。
A、任何与类相关的函数都有this指针
B、类的成员函数都有this指针
C、类的友元函数都有this指针
D、类的非静态成员函数才有this指针
标准答案:D
知识点解析:此题考查的是this指针的使用。类的每一个成员函数都有一个隐含的
常量指针,即this指针°类的静态成员函数不能含有this指针,因为this指针是一
个指向本对象的指针。
16、有如下类定义:classXX{intxx;public:xx():xx(O){cout<<'A';}
XX(intn):xx(n){cout<<,B\)};classYY:publicXX{intyy;public:
YY():yy(0){cout<<yy;)YY(intn):XX(n+l),yy(n){cout<<yy;}YY(intm,
intn):XX(m),yy(n){cout<<yy;}};下列选项中,输出结果为AO的语句是
()。
A、YYyl(O,0);
B、YYy2(l);
C、YYy3(0);
D、YYy4;
标准答案:D
知识点解析:考查的是类的继承。选项A的执行结果为BO,建立YY的对象yl,
首先调用其构造函数,YY继承于XX所以先调用的为XX的构造函数,根据输入
的参数可知输出B,然后执行YY的构造函数输出0;同理,选项B的执行结果为
B1,选项C的执行结果为B0。
17、对于一个类定义,下列叙述中错误的是()。
A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B、如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数
C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函
数
D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
标准答案:B
知识点解析:此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译
器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,
就不会生成缺省构造函数了。
18、下列有关继承和派生的叙述中,正确的是()。
A、派生类不能访问基类的保护成员
B、作为虚基类的类不能被实例化
C、派生类应当向基类的构造函数传递参数
D、虚函.数必须在派生类中重新实现
标准答案:C
知识点解析:此题考查的是继承和派生。无论使用哪种继承方式,派生类中的成员
都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,所以选
项A错误:C++中只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以
选项B错误;在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新
定义,故选项D错误。
19、有如卜函数模板定义:templateT1Fun(T2n)(retumn*5.0;}若要求以int型
数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为
()。
A、FUN(9)
B、FUN<9>
C>FUN[9]
D、FUN<9>(double)
标准答案:c
知识点0析:根据函数模板的定义,在选项C的调用中,把double类型传递给
Tl,int型传递给T2。
20、有如卜函数模板定义:template<typenameTl»TypenameT2>T1Fun(T2
n){retumn*5.0;)若要求以ini型数据9作为函数实参调用该模板,并返回一个
double型数据,则该调用应表示为()。
A、FUN(9)
B、FUN<9>
C、FUN<double>[9J
D、FUN<9>(double)
标准答案:C
知识点解析:根据函数模板的定义,在选项C的调用中,把double类型传递给
T1,血型传递给T2。
21、使用输入输出操作符setw,可以控制()。
A、输出精度
B、输出宽度
C、对齐方式
D、填充字符
标准答案:B
知识点解析:此题考查的是C++流的操作符。在C++流中,操作符setw的作用是
设置输入输出宽度。
22、下列控制格式输入输出的操作符中,能够设置浮点数精度的是()。
A^set)recision
B、setw
C、setfill
D、showpoint
标准答案:A
知识点解析:seiprecision(intn):设置浮点数的精度(有效位数或小数位数),
等价函数调用:io.precision(n)。
23、关于关键字class和typename,下列表述中正确的是()。
A、程序中的typename都可以替换为class
B、程序中的class都可以替换为typename
C、在模板形参表中只能用typename来声明参数的类型
D、在模板形参表中只能用class或typename来声明参数的类型
标准答案:A
知识点解析:此题考查的是class和typename两个关键字。关键字class除了能用
来定义类以外还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时
typename与class可以互换,但不能使用typename来定义类;在模板形参表中除了
可以用lypename和class声明虚拟类型参数外,还可以使用普通类型声明常规函
数,故选项c错误。
国家二级C++机试(选择题)模拟试卷
第2套
一、选择题(本题共36题,每题1.0分,共36分。)
1、己知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,
MINUS,PRINT=10);则下列叙述中错误的是()《
A、枚举常量NAME的值为1
B、枚举常量NUMBER的值为1
C、枚举常量MINUS的值为6
D、枚举常量PRINT的值为10
标准答案:A
知识点解析:此题考查的是C++语言的数据类型,第一个枚举常量的值为0:允
许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举
常量值的基础上以此增1。
2、下列语句中错误的是()。
A、constinta:
constinta=10;
C、constint*point=0;
D、constint*point*newint(IO);
标准答案:A
知识点解析:由关键字const声明符号常量的同时必须为其赋初值。
3、下列数据结构中,能用二分法进行查找的是()。
A、顺序存储的有序线性表
B、线性链表
C、二叉链表
D、有序线性链表
标准答案:A
知识点解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素
按值非递减排序(即从小到大,但允许相邻元素值相等)的表。
4、结构化程序所要求的基本结构不包括()。
A、顺序结构
B、GOTO跳转
C、选择(分支)结构
D、重复(循环)结构
标准答案:B
知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有
GOTO跳转结构。
5、在软件开发中,需求分析阶段可以使用的工具是()。
A、N—S图
B、DFD图
C、PAD图
D、程序流程图
标准答案:B
知识点解析:在软件开发中,需求分析阶段常使用的工具有数据流图(DFD),
数据字典(DD)、判断树和判断表。
&在c
,cin是一个()。
A类
对
象
模
BC,板
函
D数
标准答案:B
知识点解析:本题考查流对象cin,属于基础知识,cin是输入流对象,负责从键盘
获取数据,然后送到内存。本题答案为B。
7、在黑盒测试方法中,设计测试用例的主要根据是()。
A、程序内部逻辑
B、程序外部功能
C、程序数据结构
D、程序流程图
标准答案:B
知识点解析:黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒
子,设计测试用例来验证程序外部功能的正确性。
8、有如下程序:#include<iostream>usingnamespacestd;classTestClassl
{public:TestClass1{cout<<"TestClass1";)〜TestClassl(){coutVV”〜
TestClassl";}};classTeslClass2:publicTestClassl{TestClassI*p;public;
TestClass2(){cout<<"TestClass2";p=newTestClass1();}^TestCIass2(){cout<<
"~TestClass2n;deletep;}};intmain(){TestClass2obj:returnO:}执行这个程
序的输出结果是()。
A、TestClass2TestClasslTestClassl^TestClassl^TestClass2^TestClassl
B、TestClass1TestClass2TestClass1〜TestClass2〜TestClass1〜TestClass1
C、TeslClass2TestClass1TestClass1~TestClass2TestClass1~TeslClass1
D^TestClass1TestClass2TestClas1^TestClass1~TestClass2~TestClass1
标准答案:B
知识点解析:派生类中两造函数的执行顺序是:先调用基类构造函数,对基类数据
成员初始化,然后调用子对象构造函数,对子对象数据成员初始化;最后执行派生
类构造函数本身,对派生类数据成员初始化。由主函数main入手,首先定义了一
个TeslClass2对象obj。其中TestClass2公共继承TestClass1,对象obj可以访问
TestClass1中的公有成员函数。TestClass2中定义了一个TestClass1的指针p,给p
分配新空间,即指向类TestClass1,输出“TestClass1"。在TcstClass2的构造函数中
首先输出“TestClass”,并在TestClassl构造函数中输出“TestClass1"。TestClass2tlf
构函数中输出“〜TestClass2",删除指针p,输出“〜TesiClassl”。析构TestQassl
输出“〜TestClass1”。
9、下列方法中,属于白盒法设计测试用例的方法的是()。
A、错误推测
B、因果图
C、基本路径测试
D、边界值分析
标准答案:C
知识点解析:白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测
试、基本路径测试等。
10、负责数据库中查询操作的数据库语言是()。
A、数据定义语言
B、数据管理语言
C、数据操纵语言
D、数据控制语言
标准答案:C
知识点解析:负责数据库中查询操作的数据库语言是数据操纵语言。
11、有如下程序:#incluldeusingnamespacestd;classBase{private:voidfunl()
const{tout«"funl";)protected:voidfun2()const{cout«"fun2M:(public:void
fun30const{cout«"fun3";)};classDerived:protectedBase(public:voidfun4()
const{tout«"fun4";));intmain(){Derivedobj;obj.fun1();||①
obj.tim2();II②obj.fun3();II@obj.fun40:||@return0;)其中有语法错误
的语句是()。
A、①②⑧④
B、①②③
C、@@@
D、①④
标准答案:B
知识点解析:此题考查的是保护继承。因为Derived以prolecied方式继承了Base
类,所以父类Base中的公有成员和保护成员均成了Derived类的保护成员,而
Base类的私有成员Derived类不可访问。所以,主函数中通过Derived类的对象只
能够访问到Derived类的公有成员。
12、下列符号中,正确的C++标识符是()。
A、enum
B、lOObit
C、s—1
D、_int
标准答案:D
知识点解析:此题考查的是C++语言中标识符的概念。标识符是由数字、字母以
及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长
度是任意的,但由于编译系统的限制一般不超过31个字符:标识符中的大小写字
母是不同的;定义标识符时不能采用系统的保留字。
13、必须用一对大括号括起来的程序段是()。
A、switch语句中的case标号语句
B、if语句的分支
C、循环语句的循环体
D、函数的函数体
标准答案:D
知识点解析:此题考查的是语句块和函数。if语句的分支和循环语句的循环体可以
是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来;swilch语句
中的case标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大
括号括起来;函数的函数体必须用一对大括号括起来。
14、下列关于C++函数的叙述中,正确的是()。
A、每个函数至少要具有一个参数
B、每个函数都必须返回一个值
C、函数在被调用之前必须先声明
D、函数不能自己调用自己
标准答案:c
知识点解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送
给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用
自己。
15、下列选项可以做C++标识符的是()。
A、_256
B、fat/pig
C、delete
D、Schar
标准答案:A
知识点解析:标识符的命名规则:①所有标识符必须由一个字母(a〜2或人~2)
或下划线()开头;②标识符的其他部分可以用字母、下划线或数字(0〜9)组成;
③大小写字母表示不同意义,即代表不同的标识符,如cout和Coul。
16、己知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,
MINUS,PRINT=10);则下列叙述中错误的是()。
A、枚举常量NAME的值为1
B、枚举常量NUMBER的值为1
C、枚举常量MINUS的值为6
D、枚举常量PRINT的值为10
标准答案:A
知识点解析:此题考查的是C++语言的数据类型。第一个枚举常量的值为0;允许
程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常
量值的基础上以此增1。
17、有如卜程序:#include#includeusingnamespacestd;classMyBag{public:
MyBag(stringbr,stringcr):brand(br),color(cr){++count;}—MyBag(){-----
count;|staticintC,etCount(){returncount:}private:stringbrand,color;staticint
count;};intmain(){MyBagone(44CityLife,\"Gray"),two("Micky","Red");
cout<
A、intcount=0:
B、statichatcount=0;
C、intMyBag::count=0;
D、staticintMyBag::count=0;
标准答案:c-
知识点解析:本题考查沟造函数和析构函数,以及静态数据成员,题目中要求输出
2,那么定义两个对象时,就执行构造函数,使得静态数据成员++count,得到2,
那么count初始化就应该为0,静态数据成员初始化时,只能在类体外进行初始
化,一般形式为:数据类型类型::静态数据成员名二初值因此本题选C。
18、执行下列语句段后,输出字符“*”的个数是()。for(int1=50;i>l:-i)cout<
V'*';
A、48
B、49
C、50
D、51
标准答案:B
知识点解析:此题考查的是for循环语句。For循环中i从50开始逐渐递减,直到
i二1时退出,而此时没有机会执行到循环体,因此一共执行了49次循环体,所以最
终输出的是49个字符田。
19、有如卜.程序:#includeusingnamespacestd;intmain(){.inta|6]={23,15,
64»33,40,58);intsi,s2;sl=s2=a[0];for(im*p=a+l;p<a+6;p++){if(sl
>*p)sl=*p;if(s2<*p)s2=*p;}cout<<sl+s2<<endl;return0:)运行时
的输出结果是()。
A、23
B、58
C、64
D、79
标准答案:D
知识点解析:变量si和s2的初值都等于23,那么在执行第一次for循环时,加的
值等于15,它小于23,所以把15赋给变量si;执行第二次for循环时,*p的值等
于64,它大于23,所以把64赋给变量s2;而数组a中a[2]后面的元素的值都大于
15,小于64,因而变量si,S2的值不会再发生变化,最终值为15+64=79。
20、有如下程序#includeusingnamespacestd;classBase{protected:
Base(){cout«,A,;)Base(charc){cout<
A、B
B、BA
C、AB
D、BB
标准答案:C
知识点解析:此题考查的是派生类对象的构造。建立派生类对象时;构造函数的执
行顺序是:执行基类的阂造函数,调用顺序按照各个基类被被继承时声明的顺序;
执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序;执行派
生类的构造函数。此题中,在建立派生类Derived的对象dl时会先调用基类Base
的构造,调用的是默认阂造函数,输出字符,A,;然后调用自身的构造函数,输出
4B\故程序的输出结果是:ABo
21、有如卜函数模板:template
A、cast(i);
castO(i);
C、cast
D、cast<double,int>(i);
标准答案:D
知识点解析:此题考查的是模板函数的调用。本题中cast。函数的实参i只能确定
模板参数U的类型为ini,而不能确定另外一个模板参数T,故选项A、B错误:
C++语言不允许隐式地将int转化为char*,故选项C错误。
22、有如下类定义:classTest{public:Test(){a=0;c=0;}//(T)intf(int
a)const{this—>a=a;}//@staticintg(){returna;)//(3)voidh(intb){Test::b=b;};
//(4)private:inta:staticintb:constintc;|;intTest::b=0:在标注号码的行
中,能被正确编译的是()。
A①
、
B②
、
c③
、
D⑷
、
标准答案:D
知识点解析:此题考查的是类的定义。一个类的长数据成员的初始化只能在成员初
始化列表中进行,故选预A错误;常成员函数不能更新对象的数据成员,故选项
B错误:静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说
明的非静态成员,故选项C错误。
23、有如下程序:#inciude<iostream>usingnamespacestd;className{char
name[20];public:Name(){strcpy(name,n");cout<<,?':)Name(char
*fname){strcpy(namc,fname);cout<<??,;});intmain(){Name
names[3]={Name(“张三”),Name(“李四")};return0;}运行此程序输出符号?的
个数是()。
A、0
B、1
C、2
D、3
标准答案:D
知识点解析:类Name有两个构造函数,在默认构造函数中,给字符数组name赋
空值.并输出一个?;在带有字符指针的构造函数中,把字符指针fnamc所指的字
符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个
对象,name[0]>name[l]>name[2],在创建这三个对象时,会调用构造带参数的函
数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出
三个“?”符号。
24、已知函数f的原型是“voidint&y):变量vl、v2的定义是“intvl.
v2;”,下列调用语句中,正确的是()。
A、f(vl,v2);
B、f(vl,&V2);
C、f(&vl,v2);
D、f(&v1,&v2);
标准答案:C
知识点解析:在函数f的形参表达式中第一个形参为整型指针变量,第二个为整型
引用变量,所以用实参vl的指针初始化第一个形参,用实参v2初始化第二形参。
25>有如下程序:#includeusingnamespacestd:classBoat;classCar{public:
Car(inti):weight(i){)friendintTotal(constCar&c,constBoal&b);//①
private:intweight;);classBoat{public:Boat(inti):weight(i){}friendint
Total(constCar&c,constBoat&b);private:intweight:};intTotal(constCar&
c,constBoat&b){//@returnc.weighl+b.weight;}intmain(){Carc(10);
Boatb(8);cout«,?Thetotalweightis”v
A、程序编译正确
B、程序编译时语句①出错
C、程序编译时语句②出错
D、程序编译时语句③出错
标准答案:A
知识点解析:程序中定义了类car和类Boat,在两个类中分别定义他们的构造函数
和友元函数friend。程序在VC6.0中编译通过。
26、有如下类声明:classMyBASE{intk;public:voidset(intn){k=n;}int
get()const{returnk;)};classMyDERIVED:protectedMyBASE{protected:int
j;public:voidset(intm,intn){MyBASE::set(m);j=n;}intgetoconst{return
MyBASE::get()+j;)};则类MyDERIVED中保护的数据成员和成员函数的个
数是()。
A、4
B、3
C、2
D、1
标准答案:B
知识点解析:此题考查的是派生与继承中的访问权限。protected派生:private->
不行J见:protected->private:public->protectedo
27、有如下两个类定义classxx{private:dOublexl:protected:doublex2;
public:doublex3;);classYY:protectedXX{private:doubleyl;potected:
doubley2;public:doubley3;);在类YY中保批成员变量的个数是()。
A、1
R、2
C、3
D、4
标准答案:C
知识点解析:在C++中派生类从基类保护继承时,基类的公有成员在派生类中改
变为保护成员,基类的保护成员在派生类中仍为保护成员。所以对于本题来说,
YY类保护继承自类XX,那么类XX中的公有成员x3和保护成员x2在派生类中
都成为保护成员,再加上类YY。中的保护成员y2,因此在派生类YY中保护成员
的个数为3o
28>有如下程序#include#includeusingnamespacestd;classMyClass{public:
MyClass(){cout«*A*;jMyClass(charc){cout<
A、ABX
B、ABXB
C、AXB
D、AXBB
标准答案:D
知识点解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由
系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题
中,主程序在创建MayClass类的对象pl时,调用MayClass类的默认构造函数,
输出字母A;然后在创建*p2对象时,调用带字母参数的构造函数,输出字母x;
语句deleiep2;调用析构函数,输出字母B;在主函数退出时,调用析构函数清除
对象pl,输出字母B。
29、已知基类Employee只有一个构造函数,其定义如下:
Emp1oyee::Emp1oyee(intn):id(n){)Manager是Employee的派生类,则卜列对
Manager的构造函数的定义中,正确的是()。
A、Manager::Manager(intn):id(n){}
B、Manager::Manager(intn){id=n;}
C>Manager::Manager(intn):Employee(n){}
D、Manager::Manager(intn){Employee(n);J
标准答案:C
知识点解析:基类的构造函数是带有参数的,派生类从基类派生,这就需要在派生
类的构造函数名后面显示的调用基类的构造函数。
30、有如下程序:#include<iostream>usingnamespacestd;classBase{public:
voidfunO{cout<<,B,;}};classDerived:publicBase{public:void
fun(){cout<<,D,;));intmain(){Derivedd;d.f.un();rekum0;}
若程序的输出结果是BD,则划线处缺失的部分是()。
A、fun();
B、Base.fun();
C、Base::fun();
D、Rase一>fun();
标准答案:C
知识点解析:派生类Derived的对象d调用其成员函数fun(),要输出结果为BD,
所以在其成员函数funO中要调用基类Base的成员函数funOo
31、若在表达式y/x中,"/”是作为成员函数重载的运算符,则该表达式还可以
表示为()。
A、x.operator/(y)
B、operator/(x,y)
C、y.operator/(x)
D、operator/(y,x)
标准答案:C
知识点解析:运算符函数的函数名是由运算符前加关键字。perator构成的。所以当
作为运算符重载后,其格式为Operator/。所以其作为成员函数调用时的格式
为y.operator/(x)。
32、下列关于模板的叙述中,错误的是()。
A、模板声明中的第一个符号总是关键字template
B、在模板声明中用〈和〉括起来的部分是模板的形参表
C、类模板不能有数据成员
D、在一定条件下函数模板的实参可以省略
标准答案:C
知识点解析:此题考查模板的概念。模板的一般说明形式如下:templale类型形参
表函数返回值类型函数名(形参表){函数体},所以选项A、B正确。函数模板的实
参在一定条件下是可以省略的,所以选项C错误。
33、下列关于类模板的模板参数的叙述中,错误的是()。
A、模板参数可以作为数据成员的类型
B、模板参数可以作为成员函数的返回类型
C、模板参数可以作为成员函数的参数类型
D、模板参数不能作为成员函数的局部变量的类型
标准答案:D
知识点解析:此题考查的是模板参数。模板参数是一种参数化的数据模型,在模板
类或模板函数中,只要使用数据类型的地方都能使用模板参数来代表一种未知的数
据类型。所以,模板参数可以作为成员函数的局部变显类型。
34、下列关于C++预定义流对象的叙述中,正确的是()。
A、cin是C++预定义的标准输入流对象
B、cin是C++预定义的标准输入流类
C、cout是C++预定义的标准输入流对象
D、cout是C++预定义的标准输入流类
标准答案:A
知识点解析:cin为istream流类的标准输入对象,标准输入设备就是指键盘。
35、在语在loutVV,A1中,cout是()。
A、类名
B、对象名
C、函数名
D、C++的关键字
标准答案:B
知识点解析:C++有四个预定义的流对象:cin标准输.cout标准输出,cerr标准出
错信息输出,clog带缓冲的标准出错信息输出。
36、在下列枚举符号中,用来表示“相对于当前位置“文件定位方式的是()。
A^ios_base::cur
B、ios_base::beg
C、ios_base::out
D、iosbase::end
标准答案:A
知识点解析:C++流的定位方式(也就是指针移动方式)有三种,被定义为
ios_base:.5%1;(1斤中的一组枚举符号:沁5」^50::beg相当于文件首;ios_
base::cur相当于当前位置(负数表示当前位置之前);ios_base::end相对于
文件尾。
国家二级C++机试(选择题)模拟试卷
第3套
一、选择题(本题共37题,每题1.0分,共37分。)
1、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。
A、需求分析阶段
B、概念设计阶段
C、逻辑设计阶段
D、物理设计阶段
标准答案:C
知识点解析:逻辑结构没计的任务:概念结构是各种数据模型的共同基础,为了能
够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模
型,这正是数据库逻辑结构设计所要完成的任务。它包括从E-R图向关系模式转
换和逻辑模式规范化及调整、实现。
2、下列关于栈的叙述正确的是()。
A、栈按“先进先出”组织数据
B、栈按“先进后出”组织数据
C、只能在栈底插入数据
D、不能删除数据
标准答案:B
知识点解析:栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素
的一端称为栈顶,另一端称为栈底。栈是按照“先进后出”的原则组织数据的。
3、对虚函数的调用()。
A、一定使用动态联编
B、必须使用动态联编
C、一定使用静态联编
D、不一定使用动态联编
标准答案:D
知识点解析:虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函
数声明只能出现在类声明中虚函数原型中,而不能在成员的函数体实现的时候。必
须由成员函数来调用或者通过指针、引用来访问虚函数。如果通过对象名来访问虚
函数,则联编在编译过程中认为是静态联编。
4、下列链表中,其逻辑结构属于非线性结构的是
A、二叉链表
B、循环链表
C、双向链表
D、带琏的栈
标准答案:A
知识点解析:二叉链表祚为树的存储结构。链表中结点的两个链域分别指向该结点
的第一个孩子结点和下一个兄弟结点。
5、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为()。
A、16
B、10
C、6
D、4
标准答案:A
知识点解析:根据二叉树的性质,在任意二叉树中,度为O的结点(即叶子结点)总
是比度为2的结点多一个,故此度为1的结点个数二总结点数.叶子节点数.度为2
的节点数=25.5-4=16。
6、已知递归函数fun的定义如下:intfun(intn){if(n<=l)returnl;//递归结束
情况elsereturnn*fun(n2);//递归}则函数调用语句fun(5)的返回值是()。
A、5
B、12
C、15
D、30
标准答案:C
知识点解析:递归函数fun被定义为含有参数intm返回整型。其中fun函数递归
调用本身,当n=l时,fun返回1,如果大于1那么执行n*fun(n-2)。所以,当n等
于5时,执行5*fun(3);当3时继续调用firn,3*fun(l),即fun(5)=5*(3*ftm(l)),
答案为15o
7、下面不属于软件工程的3个要素是()。
A、工具
B、过程
C、方法
D、环境
标准答案:D
知识点解析:软件工程的3个要素是工具、过程和方法。
8、在数据库管理技术的发展中,数据独立性最高的是()。
A、人工管理
B、文件系统
C、数据库系统
D、数据模型
标准答案:C
知识点解析:在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程
序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。
9、下面不属于软件测试实施步骤的是()。
A、集成测试
B、回归测试
C、确认测试
D、单元测试
标准答案:B
知识点解析:软件测试实施的步骤有单元测试、集成测试和确认测试。
10、有如下程序:#includeusingnamespacestd:classMyClass{public:
MyClass(){++count;)~MyClass(){-----count;)staticintgetCount(){return
count;)private:staticintcount;};intMyClass::count=0;immain()
{MyClassobj;cout<
A、121
B、232
C、221
D、122
标准答案:A
知识点解析:本题考查静态数据成员。静态数据成员在内存中只占一份空间,静态
数据成员属于类,即使不定义对象,也会给静态数据成员分配空间,可以被引用。
本题中先是定义了一个对象obj,执行构造函数使得静态数据成员count变为了1,
然后又定义了指针对象,执行构造函数后,count变为了2,释放指针后,执行析
构函数,使得count变为了1。所以本题答案为A。
11、在数据库系统中,用户所见的数据模式为()。
A、概念模式
B、外模式
C、内模式
D、物理模式
标准答案:B
知识点解析:用户所见到的数据模式是外模式也称用户模式。它是用户的数据视
图,它由概念模式导出。一个概念模式可以有若干个外模式,每个用户只关心与它
有关的外模式,这样不仅可以屏蔽大量无关信息,而且有利于数据维护。
12、定义如下枚举类型enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2);则
下列语句正确的是()。
A、表达式Wcdnesday=Friday的值是true
B、Dayday;day=3
C、Dayday;day=Mondday+3
D、Dayday;day=lucsday+10
标准答案:A
知识点解析:enum<枚举类型名〉{〈枚举元素表〉):其中:关键词enum表示定
义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量
组成。其中enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2}的值由0
开始,即0,1,2,3oD中的本题中的枚举类型中的数据值Wednesday为2,而
Friday的值赋值为2,所以判断Wednesday等于Friday的表达式值为真,即true(>
即选择A。
13,对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成
员,说明该基类成员的访问权限是()。
A、公有或私有
B、私有
C、保护或私有
D、公有或保护
标准答案:D
知识点解析:通过公有继承定义的派生类,其成员函数可以访问基类的公有成员和
保护成员,但不能访问基类的私有成员。
14、程序调试的任务是()。
A、设计测试用例
B、验证程序的正确性
C、发现程序中的错误
D、诊断和改正程序中的错误
标准答案:D
知识点解析:程序调试的任务是诊断和改正程序中的错误。
15、在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是()。
A、+
B、()
C、«
D、++
标准答案:B
知识点解析:本题考查重载运算符,C++规定有的运算符(如赋值运算符、卜标运
算符、函数调用运算符)必须定义为类的成员函数。所以本题选B。
16、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是
A、一对一
B、一对多
C、多对一
D、多对多
标准答案:B
知识点解析:两个实体集间的联系可以有下面几种:一对一的联系、一对多或多对
一的联系和多对多的联系。由于一个宿舍可以住多个学生,所以它们的联系是一对
多联系。
17、if语句的语法格式可描述为:格式1:if(V条件>)V语句〉或格式2:if(V
条件〉)〈语句1>elseV语句2>关于上面的语法格式,下列表述中错误的是()。
A、〈条件>部分可以是一个if语句,例如if(if(a==O)…)…
B、〈语句>部分可以是一个if语句,例如if(…)if(…)…
C、如果在<条件>前加上逻辑非运算符!并交换《语句1>和〈语句2>的位
置,语句功能不变
D、V语句》部分可以是一个循环语句,例如if(…)while(…)…
标准答案:A
知识点解析:此题考查的是if语句。If语句的条件部分是一个表达式而不是语句,
因此选项A叙述错误。
18、有如下程序:#includeusingnamespacestd;intmain(){intsum;for(inti=0;i
<6:i+=3){sum=i;for(intj=i:j<6;j++)sum+=j;|cout<<sum<
A、3
B、10
C、12
D、15
标准答案:D
知识点解析:由题干可以知道,外层循环会进行两次,且第一次的结果我们可以不
去理会和计算,读者仔细观察能发现,在第一次的循环以后sum和j都会被重新赋
值,所以外层第二次循环如下:此时i=3,sum=3内层循环开始如下:j=3,j<6,
sum=6;j=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出内层循环。得到
sum=I5<>
19、字符串"a+b=12kn\t”的长度为()。
A、12
B、10
C、8
D、6
标准答案:c
知识点0析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8
个字符。
20、关于函数重载,下列叙述中错误的是()。
A、重载函数的函数名必须相同
B、重载函数必须在参数个数或类型上有所不同
C、重载函数的返回值类型必须相同
D、重载函数的函数体可以有所不同
标准答案:C
知识点解析:此题考查的是函数重载。在C++语言中,允许定义一系列函数名相
同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类
型不做要求,返回值类型也不参与区分函数的重载形式。
21、有如卜程序:#inc1ude<iostream>usingnamespacestd;classMyClass{public:
MyClass(intx):val(x){)voidPrint()const{cout<<"const:val=H<<val<<*\t5;}void
Print(){cout<<"val=M<<val<<;}private:intval,};intmain(){constMyClass
objl(10);MyClassobj2(20);objI.Print();obj2.Print();return();}程序的输出结
果是()“
A、val=10const:val=20
B、const:val=10const:val=20
C^const:val=10val=20
D、val=10val=20
标准答案:C
知识点解析:此题考查的是常成员函数的重载。常成员函数是使用const关键字说
明的函数。const关键字可用于区分重载函数。此时,常对象调用常成员函数,
般对象调用一般成员函数:题目中的Prinl()就是通过const重载的两个成员函数,
主函数中声明的objl是常对象,obj2是一,般对象c故输出结果是con"::val=10
val—20o
22、有如下程序:#include<iostream>usingnamespacestd;class
MyClass{public:MyClass(inti=0){cout<<l;}MyClass(constMyClass&x)(cout<
<2;)MyClass&operator=(constMyClass&x)(cout<<3;retum*this;}一
MyClassO{cout«4;));intmain(){MyClassobj1(1),obj2(2),obj3(objl);return
0:}运行时的输出结柒是()。
A、112444
B、11114444
C、121444
D、H314444
标准答案:A
知识点解析:当创建MyClass类对象objl⑴和obj2(2)时候,调用类构造函数会输
出两个1,然后创建类对象。bj3(obj(l))时,会调用拷贝类构造函数,输出一个2,
然后当main函数结束时候,调用三个对象的析构函数会输出三个4。
23、有如下程序:#include<iostream>#include<cstring>usingnamespacestd;
classMyString{public:charstr[8O];MyString(constchar*s){strcpy(str,s);)
MyString&operator+=(MyStringa){strcat(str,a.str);return*this;});
ostream&operator<<(ostream&s,constMyString&z){returns<<z.str;}int
main(){MyStringx("abc'),y(ncde");cout<<(x+=y)<<endl:return0;}运行
这个程序的输出结果是()。
A、abc
B、cde
C^abcde
D、abccde
标准答案:D
知识点解析:在类MySlring中,定义了带参数的构造函数MyString(eonstchiM
s),其作用是把s指向的字符串拷贝到字符组sir中。在类中还对运算十二进行重载
定义,其作用是把字符串str和a相连接并赋给str,所以在主函数中执行x+=y
时,结果为abccde。
24、有如下程序:#include<iostream>usingnamespacesld;classBase{public:
voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase
{public:,voidfun(){cout<<"Derived::fun'r<<endl;}};intmain()
{Derivedd:d.mn();return0;}己知其执行后的输出结果为:Base::fun
Derived::fun则程序中下划线处应填入的语句是()。
A、Base.fun();
B、Base::fun();
C、Base->fun():
D、mn();
标准答案:B
知识点解析:此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员
函数fun()的调用语句,此处只能使用作用域运算符“::”才能调用到基类的同名
函数,故选项B正确。
25、有如下程序:#include<iostream>usingnamespacestd;classPart(public:
Part(intx=0):val(x){cout<<val;}〜Part。{coutVVval;)private:intval;};
classWhole)public:Whole(intx,inty,intz=0):p2(x),pl(y),val(z){cout<<
val;}~Whole。{coutVVval;}private:Partp1,p2:intval:};int
main(){Wholeobj(l,2,3);return0;}程序的输出结果是()。
A、123321
B、213312
C、213
D、123123
标准答案:B
知识点解析:此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺
序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左
向右)接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺
序,最后执行自身的构造函数。析构顺序与之相反。本题中,Whole类中有两个
Pari类的成员pl和p2,根据它们定义的顺序,先构造pl再构造p2。所以,首先
被构造的是pl(y),输出2;第二个被构造的是p2(x),输出1;最后调用析构函
数,输出val的值3;析构函数调用顺序与构造函数相反。故最后输出213312。
26、有如卜程序:#include<iostream>usingnamespacestd;classA{public:
A(){cout<<,'AM;}~A(){coutVV"IA";}};classB:publicA{A*p;
public:B(){cout<<"B";p=ncwA();)~B(){coutVV"〜B";deletep;!);int
main().{Bobj;return0;}执行这个程序的输出结果是()。
A^BAA〜A〜B〜A
B、ABA〜B〜A〜A
C、BAA~B~A~A
D、ABA〜A~B〜A
标准答案:B
知识点解析:此题考查的是派生类对象的构造与析构。建立派生类对象时,构造函
数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被定义时声明的
顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类
中声明的顺序.>执行派生类的构造函数。所以本题在建立派生类B的对象obj是
会先调用基类A的构造函数,然后调用自身的构造函数。注意:B类中定义的成
员p是A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在
B类构造函数中使用new操作符动态地构造了一个A类的对象,所以整个构造结
果是输出:ABA。派生类对象的析构与构造严格相反,即先析构自身,然后析构
自身所包含的成员对象,最后调用基类的析构函数。故本题中当main。函数返回
时,析构B类的对象。bj:首先调用一B(),接着再调用一A()因为在〜B()函数中释
放了动态创建的A类对象,故整个析构所输出的结果是〜B〜A〜A。所以这个程
序输出结果为ABA〜B〜A〜A
27、有如下程序;#include<iostream>usingnamespacestd;classB{public:
virtualvoidshow(){cout<}};classD:publicB{public:voidshow(){cout
<<"D";));voidfunl(B*ptr))ptr->show();}voidfun2(B&ref){ref.show();)
voidfun3(Bb){b.show();)intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);
fun3(d);return0;}程序的输出结果是()。
A、BBB
B、BBD
C、DBB
D、DBD
标准答案:C
知识点解析:此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关
键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派
生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对
象类的那个重定义版本。此题中,[unl()和fun2()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铝扣板快速施工方案(3篇)
- 驼峰改造施工方案(3篇)
- 栽树组织施工方案(3篇)
- 自动喷水施工方案(3篇)
- 科技吊顶施工方案(3篇)
- 2024下半年多媒体应用设计师模考试卷及答案(应用技术)
- 门窗改色施工方案(3篇)
- 古建防腐施工方案(3篇)
- 2025年电工中级职业技能考试真题卷及答案(电气工程测量篇)
- 2025年新版保险代理人资格考试试题及答案
- 甲醇安全培训试题及答案
- 高空作业绳索安全操作规范
- 2025上海静安区区管企业招聘中层管理人员17人笔试备考试卷附答案解析
- 急诊用药错误的FMEA分析与预防策略
- 2025年瓷砖及石材培训试题及答案
- 2026年供水公司安全三级教育培训管理制度
- 2025年及未来5年市场数据中国3-丁烯-1-醇行业市场深度分析及发展前景预测报告
- (一模)六盘水市2026届高三高考适应性考试(一)英语试卷(含答案详解)
- 2025年新沂市教育局直属学校招聘真题
- 2025秋期版国开电大本科《管理英语4》一平台综合测试形考任务在线形考试题及答案
- 第一单元第1课 情感的抒发与理念的表达 教案 2024-2025学年人教版初中美术八年级下册
评论
0/150
提交评论