计算机二级C++笔试239.docx
- 文档编号:4820336
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:27
- 大小:24.69KB
计算机二级C++笔试239.docx
《计算机二级C++笔试239.docx》由会员分享,可在线阅读,更多相关《计算机二级C++笔试239.docx(27页珍藏版)》请在冰点文库上搜索。
计算机二级C++笔试239
[模拟]计算机二级(C++)笔试239
一、选择题(每小题2分,共70分)下列各题[A]、[B]、[C]、[D]四个选项中,只有一个选项是正确的。
第1题:
程序流程图中带有箭头的线段表示的是
A.图元关系
B.数据流
C.控制流
D.调用关系
参考答案:
C
答案解析:
在程序流程图中,图框表示各种操作的类型;图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。
带箭头的线段在数据流程图中表示数据流,而带箭头的线段在程序流程图中表示控制流。
题中给出的选项中,在图元之间用带有箭头的线段表示图元关系,在模块之间用带有箭头的线段表示调用关系。
第2题:
结构化程序设计的基本原则不包括
A.多态性
B.自顶向下
C.模块化
D.逐步求精
参考答案:
A
答案解析:
结构化程序设计的原则包括“自顶而下,逐步求精,模块化”。
多态性是面向对象程序语言的特征。
第3题:
软件设计中模块划分应遵循的准则是
A.低内聚低耦合
B.高内聚低耦合
C.低内聚高耦合
D.高内聚高耦合
参考答案:
B
答案解析:
模块划分应遵循的准则包括模块之间的耦合和内聚。
一般来说,要求模块之间的耦合尽可能低,即模块尽可能独立;模块的内聚程度尽可能高,即高内聚、低耦合的原则。
第4题:
在软件开发过程中,需求分析阶段产生的主要文档是
A.可行性分析报告
B.软件需求规格说明书
C.概要设计说明书
D.集成测试计划
参考答案:
B
答案解析:
需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审4个方面。
产生的主要文档为软件需求规格说明书。
第5题:
算法的有穷性是指
A.算法程序的运行时间是有限的
B.算法程序所处理的数据量是有限的
C.算法程序的长度是有限的
D.算法只能被有限的用户使用
参考答案:
A
答案解析:
算法具有:
①有穷性。
一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,每一步都可在有限时间内完成,即运行时问是有限的。
②确定性。
算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。
③可行性。
一个算法是可行的,即算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
④输入。
一个算法有0个或多个输入,这些输入取自于某个特定的对象的集合。
⑤输出。
一个算法有一个或多个输出。
第6题:
对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是
A.快速排序
B.冒泡排序
C.直接插入排序
D.堆排序
参考答案:
D
答案解析:
在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n-1)/2,堆排序需要比较的次数为nlog2n。
第7题:
下列关于栈的叙述正确的是
A.栈按“先进先出”的原则组织数据
B.栈按“先进后出”的原则组织数据
C.只能在栈底插入数据
D.不能删除数据
参考答案:
B
答案解析:
在栈中,允许插入与删除的一端称为栈顶。
栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;即栈是按照“先进后出”或“后进先出”的原则组织数据的。
第8题:
在数据库设计中,将E-R图转换成关系数据模型的过程属于
A.需求分析阶段
B.概念设计阶段
C.逻辑设计阶段
D.物理设计阶段
参考答案:
C
答案解析:
数据库的逻辑设计分为:
①将概念模型转换成一般的数据模型;②将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。
把概念模型转换成关系数据模型就是把E~R图转换成一组关系模式。
第9题:
A.并
B.自然连接
C.笛卡儿积
D.交
参考答案:
D
答案解析:
在关系运算中,交的定义如下:
设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则R1∩R2为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1又属于R2。
第10题:
设有表示学生选课的3张表:
学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为
A.课号,成绩
B.学号,成绩
C.学号,课号
D.学号,姓名,成绩
参考答案:
C
答案解析:
“选课表”SC是“学生表”S和“课程表”C的映射表,主键是两个表主键的组合。
第11题:
下列有关函数重载的叙述中,错误的是
A.函数重载就是用相同的函数名定义多个函数
B.重载函数的参数列表必须不同
C.重载函数的返回值类型必须不同
D.重载函数的参数可以带有默认值
参考答案:
C
答案解析:
当两个或者两个以上的函数共用一个相同的函数名时,称为函数的重载。
函数重载时函数名必须相同。
函数的参数个数和类型不同;函数的返回值类型可以相同,也可以不同。
第12题:
下列有关类成员的叙述中,正确的是
A.友元函数是类的成员函数
B.类成员的默认访问权限是私有的
C.类成员函数必须声明为公有的
D.类的静态数据成员不能是常成员
参考答案:
B
答案解析:
即可以是不属于任何类的非成员函数,也可以是另外一类的成员函数,统称为成员函数。
友元函数不是当前类的成员函数,而是独立于当前类的外部函数。
类成员函数可以声明为任何访问权限。
类的静态成员可以定义为常成员,只是其值不能改变。
第13题:
下列有关类继承的叙述中,错误的是
A.继承可以实现软件复用
B.虚基类可以解决由多继承产生的二义性问题
C.派生类构造函数要负责调用基类的构造函数
D.派生类没有继承基类的私有成员
参考答案:
D
答案解析:
派生类继承基类,即继承了基类的所有成员,包括公有成员、私有成员和保护成员,只是私有成员在派生类中不能被访问。
第14题:
下列有关运算符重载的叙述中,正确的是
A.运算符重载是多态性的一种表现
B.C++中可以通过运算符重载创造新的运算符
C.C++中所有运算符都可以作为非成员函数重载
D.重载运算符时可以改变其结合性
参考答案:
A
答案解析:
进行运算符重载时,不能改变运算符的优先级和结合特性,也不能创造新的运算符,“=”、“[]”、“()”运算符不能作为非成员函数重载。
第15题:
下列有关模板的叙述中,正确的是
A.函数模板不能含有常规形参
B.函数模板的一个实例就是一个函数定义
C.类模板的成员函数不能是模板函数
D.用类模板定义对象时,绝对不能省略模板实参
参考答案:
B
答案解析:
函数模板和类模板均允许使用多个类型参数,也允许常规形参出现。
类模板的成员函数可以为模板函数。
使用模板定义对象时,类模板的实际类型名不能省略,而模板的实参表则不一定必须有。
第16题:
下列有关C++流的叙述中,错误的是
A.C++操作符setw设置的输出宽度永久有效
B.C++操作符endl可以实现输出的回车换行
C.处理文件I/O时,要包含头文件fstream
D.进行输入操作时,eof()函数用于检测是否到达文件尾
参考答案:
A
答案解析:
setw设置的宽度只对紧跟其后的输出语句有效。
第17题:
下列符号中能够作为C++标识符的是
A.const
B.2a
C._shape
D.-connt
参考答案:
C
答案解析:
在C++中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母、下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。
C++变量区分大小写。
第18题:
已知枚举类型声明语句为:
enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10}; 则下列说法中错误的是
A.枚举常量YELLOW的值为1
B.枚举常量RED的值为6
C.枚举常量BLACK的值为10
D.枚举常量WHITE的值为1
参考答案:
D
答案解析:
枚举变量中的枚举元素系统是按照常量来处理的。
如果没有进行元素赋值操作,那么元素将会被系统从0开始自动递增地进行赋值操作,但是,如果一旦定义了某一个元素的值,那么系统将对下一个元素进行按前一个元素的值加1操作,故wHITE=1,YELLOW=2,GREEN=5,RED=6,BLACK=10。
第19题:
执行下列语句段后,输出字符“*”的个数是for(inti=50;i>1;i-=2)tout<<'*';
A.24
B.25
C.26
D.50
参考答案:
B
答案解析:
此题等价于求1~50之间的偶数个数,答案为25。
第20题:
有如下定义:
inta[5]={1,3,5,7,9},*p=a; 下列表达式中不能得到数值5的是
A.a[2]
B.a[3]
C.*(p+2)
D.*p+4
参考答案:
B
答案解析:
a[3]=7,*(p+2)等于从首地址移动2个元素位,指向数组a[2]=5,*p+4等于a[0]+4=5。
第21题:
已知函数f的原型是voidf(int*a,long&B.;,变量v1、v2的定义是:
intv1:
longv2:
下列调用语句中正确的是
A.f(v1,&v2);
B.f(v1,v2);
C.f(&vl,&v2);
D.f(&vl,v2);
参考答案:
D
答案解析:
voidf(int*a,long&B.;的第一个形参是指针,要求实参为指针或者变量地址;第二个形参是变量引用,实参为同类型变量即可。
第22题:
有如下类定义:
classPoint{private:
staticinthow_many;};______how_many=0; 要初始化Point类的静态成员how_many,在下画线处应填入的内容是
A.int
B.staticint
C.intPoint:
:
D.staticintPoint:
:
参考答案:
C
答案解析:
在类外对类的静态数据成员进行初始化时必须加上类名和域作用符,也可在前面加上成员的类型名。
第23题:
在下列关键字中,不能用来表示继承方式的是
A.private
B.static
C.public
D.protected
参考答案:
B
答案解析:
static用来定义静态成员而不是继承方式。
第24题:
已知Value是一个类,value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原形中,正确的是
A.Valueoperator+(Valuev,inti);
B.Valueoperator+(Valuev=value,inti);
C.Valueoperator+(ValueV,inti=0);
D.Valueoperator+(Valuev=value,inti=0);
参考答案:
B
答案解析:
+是二元运算符,重载不能改变这一点。
所以为了保证+有两个参数,所以不允许有默认参数。
第25题:
下面是一个模板声明的开始部分:
template<typenameT>double… 由此可知
A.这可能是一个函数模板的声明
B.这可能是一个类模板的声明
C.这既可能是一个函数模板的声明,也可能是一个类模板的声明
D.这肯定是一个错误的模板声明
参考答案:
A
答案解析:
函数模板声明的格式:
template<typename类型参数>返回类型函数名(模板形参表){函数体}类模板的声明格式:
template<typename类型参数>class类名{类成员声明}故答案为A。
第26题:
有如下4个语句:
①eout<<'A'<<setfill('$')<<lefl<<setw(7)<<'B'<<endl; ②eout<<setfill('*')<<lefl<<setw(7)<<'A'<<'B'<<endl; ③eout<<'A'<<setfill('*')<<right<<setw(7)<<'B'<<endl; ④eout<<setfill('*}')<<right<<setw(7)<<'A'<<'B'<<endl; 其中能显示A******B的是
A.①和③
B.①和④
C.②和③
D.②和④
参考答案:
C
答案解析:
预定义操作符中,setfill(C.设置c为填充字符。
setw(n),n为宽度;left为左对齐,右填充,right为右对齐,左填充。
所有的预定义操作符均只对紧跟其后的输出语句起作用。
第27题:
有如下类定义:
ClaSSMyClass{intvalue;public:
MyClass(intn):
value(n){}intgetValue()const{returnvalue;}l; 则类MyClass的构造函数的个数是
A.1个
B.2个
C.3个
D.4个
参考答案:
A
答案解析:
对于类的构造函数,如果有显式定义,那么在构造该类对象时就自动调用显式定义的构造函数,否则系统将给类一个默认的空构造函数。
第28题:
有如下类和对象的定义:
classConstants{public:
staticdoublegetPI(){return3.1416;}};Constantsconstants; 下列各组语句中,能输出3.1416的是
A.cout<<constants->getPI();和cout<<Constants:
:
getPI();
B.cout<<constants.getPI();和cout<<Constants.getPI();
C.cout<<constants->getPI();和cout<<Constants->getPI();
D.cout<<eonstants.getPI();和cout<<Constants:
:
getPI();
参考答案:
D
答案解析:
Constants定义了一个类对象,对象对类的成员函数引用时,用的是“.”而不是“->”操作符。
或者在类外部对类中的成员函数进行显式调用为:
类名:
:
成员函数名()
第29题:
有如下程序:
#include<iostream>usingnamespaeestd;classVAC{public:
intf()COUSt{return3;}intf(){return5;}};intmain(){VACvl;constVACv2;eout<<v1.f()<<v2.f();return0;}程序的输出结果是
A.53
B.35
C.55
D.33
参考答案:
A
答案解析:
常对象只能访问常成员函数,而不能访问普通成员函数;同样,普通成员函数也不能访问常成员函数。
第30题:
有如下类声明:
classBase{protected:
intamount;public:
Base(intn=0):
araount(n){}intgetAmount()const{retumamount;}};classDerived:
publicBase{protected;intvalue;public:
Derived(intm,intn):
value(n1),Base(n){}intgetData()const{returnvalue+amount;}}; 已知x是一个Derived对象,则下列表达式中正确的是
A.x.value+x.getAmount()
B.x.getData()-x.getAmount()
C.x.getData()-x.amount
D.x.value+x.amount
参考答案:
B
答案解析:
在公有继承方式下,派生类对象可以访问派生类中的保护成员和公有成员,也可以访问基类中的公有成员,但不能访问基类的保护成员。
运算表达式要求数据类型相同。
第31题:
有如下程序:
#include<iostream>usingnamespacestd;classBase{intx;public:
Base(intn=0):
x(n){cout<<n;}intgetX()const{returnx;}};classDerived:
publicBase{inty;public:
Derived(intm,intn):
y(m),Base(n){tout<<m;}Derived(intm):
y(m){cout<<m;}};intmain(){Deriveddl(3),d2(5,7);return0;} 程序的输出结果是
A.375
B.357
C.0375
D.0357
参考答案:
C
答案解析:
对象在创建时,先调用基类的构造函数,然后调用派生类的构造函数。
在调用基类的构造函数时,如果没有给基类的构造函数形参赋值,则基类的构造函数使用带默认值的参数,所以d1(3)打印03;如果给基类的构造函数形参赋有初值,则使用实参值,故d2(5,7)打印75。
第32题:
下列有关抽象类和纯虚函数的叙述中,错误的是
A.拥有纯虚函数的类是抽象类,不能用来定义对象
B.抽象类的派生类若不实现纯虚函数,它也是抽象类
C.纯虚函数的声明以“=0;”结束
D.纯虚函数都不能有函数体
参考答案:
D
答案解析:
纯虚函数的声明格式为:
virtual函数类型函数名(参数表)=0拥有纯虚函数的类就叫抽象类,如果在派生类中不实现纯虚函数,则派生类也是抽象类。
纯虚函数在派生类可以被重新定义,即可以拥有函数体。
第33题:
有如下程序:
#include<iostream>usingnamespacestd;classAmount{intamount;public:
Amount(intn=0):
amount(n){}intgetAmount()const{returnamount;}Amount&operator+=(AmountA){amount+=a.amount;return;}};intmain(){Amountx(3),y(7);x+=y:
cout<<x.getAmount()<<endl;return0;} 已知程序的运行结果是10,则下画线处缺失的表达式是
A.*this
B.this
C.&amount
D.amount
参考答案:
A
答案解析:
第34题:
下列语句分别是不同程序中的第一个输入/输出语句,若去掉其中的“<<left”,则输出效果将发生变化的是
A.eout<<left<<setfill('*')<<357;
B.cout<<left<<setw(5)<<357;
C.eout<<left<<setw(5)<<"ABCDE";
D.eout<<left<<"ABCDE";
参考答案:
B
答案解析:
left输出操作符的含义是左对齐、右填充。
如果和setw配合使用,当输出的变量或者表达式的宽度达不到setw所设置的宽度时,将进行填充。
第35题:
有如下程序:
#include<iostream>usingnamespacestd;classGA{public:
virtualintf(){return1;}};classGB:
publicGA{public:
virtualintf(){return2;}};voidshow(GAg){eout<<g.f();}voiddisplay(GA&g){cout<<g.f();}intmain(){GAa;show(A);display(A);GBb;show(B.;display(B.;return0;} 程序的输出结果是
A.1111
B.1211
C.112
D.1212
参考答案:
C
答案解析:
基类对象作为实参进行传递时,无论使用的是对象还是对象引用作为形参,都只能在该函数中调用基类成员函数,因此当GAa作为实参时,调用的只能是GA的成员函数。
而当派生类对象作为实参传递时,函数的形参则要分情况而定:
如果是普通的对象传递,则是值传递,那么在函数中也只能调用基类的成员函数;如果是对象引用作为形参,则是地址传递,这个时候函数就可以调用重载后的虚成员函数。
二、填空题(每空2分,共30分)
第36题:
测试用例包括输入值集和______值集。
参考答案:
输出
详细解答:
软件测试用例是为了有效地发现软件缺陷而编写的包含测试目的、测试步骤、期望测试结果的特定集合。
正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。
软件测试用例包括输入值集和输出值集。
测试用例是软件测试的核心。
第37题:
深度为5的满二叉树有______个叶子结点。
参考答案:
16
详细解答:
在满二叉树中,叶子结点数目的计算公式为2n-1,其中n为树的深度。
第38题:
设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有______个元素。
参考答案:
24
详细解答:
实现循环队列时,头指针指向第一个元素的前一个空间,尾指针指向最后一个元素。
因此,此时队列中6、7、8、……、29这24个空间存有元素,即队列中有29-5=24个元素。
第39题:
在关系数据库中,用来表示实体之间联系的是______。
参考答案:
关系
详细解答:
在关系数据库中,用关系(二维表结构)表示实体及其之间联系的模型称为关系数据模型。
第40题:
在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,______负责数据的模式定义与数据的物理存取构建。
参考答案:
数据定义语言
详细解答:
数据定义语言负责数据的模式定义与数据的物理存取构建;数据操纵语言负责数据的操纵,如查询与增、删、改等;数据控制语言负责数据完整性、安全性的定义与检查,以及并发控制、故障恢复等。
第41题:
在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。
类是一种抽象的概念,属于该类的一个实例称为“______”。
参考答案:
对象
详细解答:
类是对同一类具有相似性的事物的抽象,即类是对象的抽象,而对象是类的一个实例。
或者具体化。
第42题:
指针数组是由______构成的数组。
参考答案:
指针变量
详细解答:
数组指针是由一组同类型的指针变量组成的一个数组。
第43题:
如果使用数组名作为函数参数,形实结合时,传递的是______。
参考答案:
地址
详细解答:
使用数组作为函数参数时,是将数组的地址传递给函数的形参,即函数形参应该为一个指针变量或者数组名变量。
第44题:
在类的对象被创建的时候,______函数会被自动调用。
参考答案:
构造
详细解答:
类的对象被创建时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 C+ 笔试 239
![提示](https://static.bingdoc.com/images/bang_tan.gif)