最新全国计算机等级考试二级c++题库5(共17套).doc
第五套
1、有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为______。
A、笛卡尔积
B、交
C、并
D、自然连接
笛卡尔积:设关系R和S的元数分别是r和s,定义R和S的笛卡尔积是一个(r+s)元元组的集合,每一个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元组。若R有k1个元组,s有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。
交:设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由属于R又属于S的所有元组组成。
并:设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成。
自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须有相同的属性组,并且要在结果中把重复的属性去掉。
故本题答案为D。
2、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是______。
A、O(n)
B、
C、
D、
二分法检索要求线性表结点按关键值排序且以顺序方式存储。在查找时,首先与表的中间位置上结点的关键值比较,若相等则检索成功;否则根据比较结果确定下一步在表的前半部分或后半部分继续进行。二分法检索的效率比较高,设线性表有n个元素,则最多的检索次数为大于log2n(2为底数)的最小整数,最少的检索次数为1。
故本题答案为C。
3、在面向对象方法中,不属于"对象"基本特点的是______。
A、一致性
B、分类性
C、多态性
D、标识惟一性
面向对象方法中最基本的概念是对象,它的基本特点有:标识惟一性、分类性、多态性、封装性和模块独立性好。
故本题答案为A。
4、在软件开发中,需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
阶段可以使用的工具是______。
A、N-S图
B、DFD图
C、PAD图
D、程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图
软件开发阶段包括需求分析、总体设计、详细设计、编码和测试5个阶段。其中需求分析阶段常用的工具是数据流图(简称DFD)和数据字典(简称DD)。常见的详细设计的图形描述工具主要有程序
流程图
破产流程图 免费下载数据库流程图下载数据库流程图下载研究框架流程图下载流程图下载word
、N-S结构图、问题分析图(简称PAD图)。
故本题答案为B。
5、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是______。
A、12345ABCDE
B、EDCBA54321
C、ABCDE12345
D、54321EDCBA
栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。这表明栈的运算规则是"先进后出"(或称"后进先出")。在栈顶进行插入运算,称为进栈(或入栈),在栈顶进行删除运算,称为退栈(或出栈)。本题中,依次进栈,即依次插入元素1、2、3、4、5、A、B、C、D、E,依次出栈,即依次删除元素,根据栈"先进后出"的规则,应该以倒序出栈。即元素出栈顺序为EDCBA54321。
故本题答案为B。
6、数据流图中带有箭头的线段表示的是______。
A、控制流
B、事件驱动
C、模块调用
D、数据流
数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要的图形元素与说明如下:
加工(转换):输入数据经加工变换产生输出。
数据流:沿箭头方向传送数据的通道,一般在旁边标注数据流名。
存储文件(数据源):表示处理过程中存放各种数据的文件。
源,潭:表示系统和环境的接口,属系统之外的实体。
故本题答案为D。
7、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是______。
A、一对一
B、一对多
C、多对一
D、多对多
两个实体间的联系可以归纳为3种类型:
一对一联系:一对一的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。
一对多联系或多对一:一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。
多对多联系:多对多的联系表现为一个表中的多个记录在相关表中同样有多个记录与其匹配。
一间宿舍可以住多个学生,但每个学生只能住一个宿舍,所以实体宿舍和学生之间的联系为一对多的联系。
故本题答案为B。
8、下列叙述中正确的是______。
A、循环队列中有队头和队尾两个指针,因此,循环队列是非线性结构
B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D、循环队列中元素的个数是由队头指针和队尾指针共同
决定
郑伟家庭教育讲座全集个人独资股东决定成立安全领导小组关于成立临时党支部关于注销分公司决定
所谓循环队列,就是将队列存储空间的最后一个位置绕到第1个位置,形成逻辑上的环状空间,供队列循环使用。所以循环队列还是属于线性结构,所以选项A是错误的。循环队列的头指针front指向队列的第一个元素的前一位置,队尾指针rear指向队列的最后一个元素,循环队列的动态变化需要头尾指针共同反映,所以选项B、C是错误的。循环队列的长度是:(sq.rear-sq.front+maxsize)%maxsize,所以循环队列的长度是由队头和队尾指针共同决定的,所以选项D正确。
故本题答案为D。
9、下列叙述中正确的是______。
A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C、顺序存储结构能存储有序表,链式存储结构不能存储有序表
D、链式存储结构比顺序存储结构节省存储空间
顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素,链式存储结构中各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,所以选项A是正确的。两者都可以存储线性的、有序的逻辑结构,所以选项B、C不正确。顺序结构使用的是连续物理空间,链式结构可以使用零散的物理空间存储,链式结构更灵活,不存在谁节约空间的说法,所以选项D不正确。
故本题答案为A。
10、在数据管理技术发展的三个阶段中,数据共享最好的是______。
A、人工管理阶段
B、文件系统阶段
C、数据库系统阶段
D、三个阶段相同
数据库管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
人工管理阶段的特点:数据不保存、数据不独立、数据不能共享、数据无结构,没有专门的数据管理软件。
文件系统阶段的特点:数据可以长期保存,有专门的数据管理软件--文件系统。但是数据独立性低,共享性差、冗余度大,数据记录内有结构,整体无结构。
数据库系统阶段的特点:数据结构化,数据独立性高,数据共享性高,冗余度小,易于扩充,数据库管理系统提供统一的数控制功能,包括数据安全性、完整性、并发控制和数据恢复功能。
故本题答案为C。
11、下列选项中,与实现运行时多态性无关的是______。
A、重载函数
B、虚函数
C、指针
D、引用
本题主要考查了多态性。
在C++语言中,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现的;运行过程中的多态性需要满足三个条件,首先类之间满足类型兼容规则,第二要声明虚函数,第三是要由成员函数调用或者是通过指针、引用来访问虚函数。因此重载函数与实现运行时多态性无关。
故本题答案为A。
12、下列模板声明中,有语法错误的是______。
A、template
T fun(T x){return x;} B、template T fun(T x,int n){return x*n;}
C、templateT fun(T *p){return *p;} D、templateT class A{T n;};
本题主要考查了模板的定义。
函数模板的定义形式为:
template 或template
类型名 函数名(参数表){函数体的定义}
因此选项A、B和C是正确的。
类模板声明的语法形式为:
template<模板参数表> class 类名{类成员声明};
在选项D中,模板参数表和class关键字之间有模板参数T不符合模板声明的语法,因此本题答案为D。 13、对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是______。
A、公有或私有
B、私有
C、保护或私有
D、公有或保护
本题主要考查了派生类对基类成员的访问。
基类的成员有公有(public)、保护(protected)和私有(private)三种访问权限,类的继承方式也有公有继承(public)、保护继承(protected)和私有继承(private)三种。无论哪种继承方式,派生类中的成员都不能访问基类中的私有成员,因此选项A、B和C不正确,但可以访问基类中的公有成员和保护成员。
故本题答案为D。
14、有如下程序:
#include
using namespace std;
int main(){
int sum;
for(int i=0;i<6;i+=3){
sum=i;
for(int j=i;j<6;j++) sum+=j;
}
cout<
using namespace std;
class Sample{
public:
Sample(){}
~Sample(){cout<<'*';}
};
int main(){
Sample temp[2],*pTemp[2];
return 0;
}
执行这个程序输出星号(*)的个数为______。
A、1
B、2
C、3
D、4
本题主要考查了构造函数、析构函数和指针。
构造函数在对象被创建的时候由系统自动调用,析构函数用来完成对象被删除前的一些清理工作,在对象的生存期即将结束的时刻被系统自动调用。本题的main()函数中,第一条语句定义了一个含有2个元素的对象数组temp和一个含有2个元素的指针数组pTemp,声明指针,只是得到了用于存储地址的指针变量,不会创建对象,故此时只创建了两个对象。当main()函数结束时,temp数组中的元素对象被删除时,系统自动调用析构函数2次输出两个'*'。
故本题答案为B。
18、要利用C++流进行文件操作,必须在程序中包含的头文件是______。
A、iostream
B、fstream
C、strstream
D、iomanip
本题主要考查了C++流。
要利用C++流,必须在程序中包含有关的头文件,以便获得相关流类的声明。为了使用新
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的流,相关头文件的文件名中不得有扩展名。与C++流有关的头文件有:
iostream:要使用cin、cout的预定义流对象进行针对标准设备的I/O操作,须包含此文件。
fstream:要使用文件流对象进行针对磁盘文件的I/O操作,须包含此文件。
strstream:要使用字符串流对象进行针对内存字符串空间的I/O操作,须包含此文件。
iomanip:要使用setw、fixed等大多数操作符,须包含此文件。
故本题答案为B。
19、如果表达式a>=b中的">="是作为非成员函数重载的运算符,则可以等效地表示为______。 A、a.operator>=(b)
B、b.operator>=(a)
C、operator>=(a,b)
D、operator>=(b,a)
本题主要考查了运算符重载。
C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator。一般而言,如果在类X中重载双目运算符@,a和b是类X的两个对象,则下列两种函数调用方法是等价的:
第一种是通过运算符构成表达式的形式进行调用,即a@b;
第二种是像一般函数那样用函数名进行调用:当把@作为成员函数重载时,调用形式为a.operator @(b);当把@作为非成员函数重载时,调用形式为operator @(a,b)。本题是把运算符>=重载为非成员函数,因此与表达式a>=b等效的表示为operator>=(a,b)。
故本题答案为C。
20、定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为______。 A、私有继承
B、非私有继承
C、保护继承
D、公有继承
本题主要考查了派生类的定义。
定义派生类的一般格式如下:
class <派生类名>:<继承方式1> <基类名1>,…,<继承方式n> <基类名n>{<派生类新定义成员>};
其中,<继承方式>即派生类的访问控制方式,用于控制基类中声明的成员在多大的范围内能被派生类的用户访问。每一个继承方式,只对紧随其后的基类进行限定。继承方式包括3种:公有继承(public)、私有继承(private)和保护继承(protected)。如果不显式地给出继承方式,缺省的类继承方式是私有继承private。
故本题答案为A。
21、在语句"cout<<'A';"中,cout是______。
A、类名
B、对象名
C、函数名
D、C++的关键字
本题主要考查了预定义流对象。
C++流有4个预定义的流对象,它们的名称及与之联系的I/O设备如下:
cin 标准输入
cout 标准输出
cerr 标准出错信息输出
clog 带缓冲的标准出错信息输出
故本题答案是B。
22、在C++中,编译系统自动为一个类生成缺省构造函数的条件是______。
A、该类没有定义任何有参构造函数
B、该类没有定义任何无参构造函数
C、该类没有定义任何构造函数
D、该类没有定义任何成员函数
本题主要考查了构造函数。
如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了构造函数,无论定义的构造函数是否带参数,都不会再生成缺省构造函数,因此选项C是正确的。
故本题答案为C。
23、下列语句中错误的是______。
A、const int a;
B、const int a=10;
C、const int *point=0;
D、const int *point=new int(10);
本题主要考查了符号常量的声明。
符号常量声明的语法格式为:
const <类型名> <符号常量名>=<初值表达式>,……;
符号常量必须在声明的同时为其赋初值,因此选项A是错误的。
故本题答案为A。
24、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为______。
A、派生类、成员对象类、基类
B、成员对象类、基类、派生类
C、基类、成员对象类、派生类
D、基类、派生类、成员对象类
本题主要考查了构造函数的调用。
当派生类中有多个成员对象时,各个成员对象构造函数的调用顺序也取决于在派生类中定义的顺序(自上而下),而与在派生类构造函数的成员初始化列表中给出的顺序无关。建立派生类对象时,构造函数的执行顺序如下:(1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);(3)执行派生类的构造函数。
故本题答案为C。
25、若已经声明了函数原型"void fun(int a,double b=0.0);",则下列重载函数声明中正确的是______。 A、void fun(int a=90,double b=0.0); B、int fun(int a,double B);
C、void fun(double a,int B);
D、bool fun(int a,double b=0.0);
本题主要考查了函数重载。
函数重载允许用同一个函数名定义多个函数。被重载的函数必须要有不同的形参列表,不可以根据函数返回值类型来重载函数。
故本题答案为C。
26、当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为______。 A、ios_base::in
B、ios_base::binary
C、ios_base::in | ios_base::out
D、ios_base::out
本题主要考查了输出文件流。
当使用ofstream流类定义一个流对象并打开一个磁盘文件时,通常要指定打开模式标志。对于所有ofstream对象,标志ios_base::out是隐含指定的打开方式,因此本题答案为D。
27、在一个抽象类中,一定包含有______。
A、虚函数
B、纯虚函数
C、模板函数
D、重载函数
本题主要考查了抽象类的定义。
拥有纯虚函数的类称为抽象类,抽象类不能用来定义对象。
故本题答案为B。
28、下列关于模板的叙述中,错误的是______。
A、调用模板函数时,在一定条件下可以省略模板实参
B、可以用int、double这样的类型修饰符来声明模板参数
C、模板声明中的关键字class都可以用关键字typename替代
D、模板的形参表中可以有多个参数
本题主要考查了模板。
在C++中,模板分为函数模板和类模板。声明一个函数模板的格式是:
template <模板形参表声明> <函数声明>
其中的模板形参表声明是由一个或多个模板形参组成(如果是多个,需要用逗号隔开),因此选项D正确。每个模板形参具有下面几种形式:
(1)typename <参数名>
(2)class <参数名>
(3)类型修饰 <参数名>
在这三种形式中,前两种是等价的:在声明模板参数时,关键字typename与class可以互换。用typename或class声明的参数称为虚拟类型参数;而用类型修饰声明的参数则称为常规参数,在形式上与普通的函数参数声明相同,因此选项B也正确。
在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两
>括起来的参数表)或从模板函数实参表(用(和)括起个不同的渠道获得这样的信息:从模板实参表(用<和
来的参数表),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略,因此选项A正确。
在类模板声明中,用于声明类的关键字class不能用关键字typename替代,故选项C不正确。
故本题答案为C。
29、下列关于运算符重载的叙述中,错误的是______。
A、有的运算符可以作为非成员函数重载
B、所有的运算符都可以通过重载而被赋予新的含义
C、不得为重载的运算符函数的参数设置默认值
D、有的运算符只能作为成员函数重载
本题主要考查了运算符重载。
在C++语言中,不是所有的运算符都可以被重载,C++语言规定,除了"."、".*"、"->*"、"::"、"?:"这五个运算符外,其它运算符都可以被重载,因此选项B不正确;由于很多符号是一元运算符和二元运算符共用的,为了避免含混,C++语言规定不得为重载的运算符函数设置默认值,调用时也就不得省略实参,因此选项C正确;
在C++中,运算符的重载方式有两种:(1)重载为成员函数(2)重载为友元函数,"="、"[]"、"()"、"->"以
及所有的类型转换运算符只能重载为成员函数,有的运算符既可以重载为成员函数,也可以重载为友元函数,
故选项A和D都正确。
故本题答案为B。
30、有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int x):val(x){}
void Set(int x){val=x;}
void Print()const{cout<<"val="< const <对象名>或const <类名> <
对象名>,常对象在定义时必须进行初始化,而且不能被更新。由于对象obj1为常对象,所以对象obj1的数据成
员val不能被更新,且对象obj1只能调用它的常成员函数,而成员函数Set不是常成员函数,故语句3不正确。
故本题答案为C。
31、有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass& operator =(const MyClass&x){cout<<3;return *this;}
~MyClass(){cout<<4;}
};
int main(){
MyClass obj1(1),obj2(2),obj3(obj1);
return 0;
}
运行时的输出结果是______。
A、112444
B、11114444
C、121444
D、11314444
本题主要考查了构造函数、拷贝构造函数和析构函数。
构造函数在对象被创建的时候由系统自动调用,析构函数在对象的生存期即将结束的时候由系统自动调用,拷贝构造函数发生在用一个已知的对象初始化一个正在创建的同类对象的时候。在main()函数中,语句MyClass obj1(1),obj2(2),obj3(obj1);创建了三个对象,在创建obj1和obj2对象时系统分别自动调用类的构造函数一次,此时输出2个1,在创建obj3对象时是用已创建的对象obj1初始化,系统自动调用拷贝构造函数一次,输出1个2,最后main函数通过return语句返回,此时系统自动调用析构函数3次销毁前面定义的三个对象,因此会输出3个4。故本题最终输出的结果为112444。
故本题答案为A。
32、在下列原型所示的C++函数中,按"传值"方式传递参数的是______。
A、Void f1(int x);
B、Void f2(int *x);
C、Void f3(const int *x);
D、Void f4(int &x);
本题主要考查了函数参数的传递方式。
在C++中,函数之间传递参数有"传值"和"传址"两种方式。C++默认的参数传递方式是"传值",因此选项A是正确的,形参为指针或引用都是"传址",因此选项B、C、D都不正确。
故本题答案为A。
33、在类声明中,紧跟在"public:"后声明的成员的访问权限是______。
A、私有
B、公有
C、保护
D、默认
本题主要考查了类的声明。
类声明的一般格式如下:
class<类名>{public:<成员函数或数据成员的说明> protected:<数据成员或成员函数的说明> private:<数据成员或成员函数的说明>};
其中关键字public、private和protected称为访问权限修饰符,它们限制了紧跟其后的类成员的访问控制范围,类中提供了3种访问控制权限:公有(public)、私有(private)和保护(protected)。
故本题答案为B。
34、下列运算符函数中,肯定不属于类Value的成员函数的是______。
A、Value operator+(Value);
B、Value operator-(Value,Value);
C、Value operator*(int);
D、Value operator/(Value);
本题主要考查了运算符重载。
运算符重载为成员函数时,因为此成员函数所属的对象可成为运算符的一个运算分量,所以形参个数一般为运算符的元数减1。选项B中重载的运算符"-"的参数表里有两个参数,如果是重载为成员函数,则运算符"-"是三元运算符,但"-"不可能是三元运算符,故选项B中的运算符肯定不是重载为成员函数。
故本题答案为B。
35、在一个派生类的成员函数中,试图调用其基类的成员函数"Void f();",但无法通过编译。这说明______。 A、f()是基类的私有成员
B、f()是基类的保护成员
C、派生类的继承方式为私有
D、派生类的继承方式为保护
本题主要考查了派生类对基类成员的访问。
派生类对基类中各成员的访问能力与继承方式无关,无论是公有、保护还是私有继承,派生类中的成员都能够访问基类中的公有成员和保护成员,而不能访问基类中的私有成员,因此选项B、C和D不正确。
故本题答案为A。
36、对下列二叉树进行中序遍历的结果是______。
标准答案为:DBXEAYFZC 或 D、B、X、E、A、Y、F、Z、C 或 D,B,X,E,A,Y,F,Z,C 或 D,B,X,E,A,Y,F,Z,C
二叉树的中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。因此本题中序遍历的结果为DBXEAYFZC。
37、按照软件测试的一般步骤,集成测试应在______测试之后进行。
标准答案为:单元 或 模块
软件测试的过程按照四个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。单元测试又称模块测试,所以本题中也可以填写模块测试。
38、数据库设计包括概念设计、______和物理设计。
标准答案为:逻辑设计
数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干个阶段。它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段。
39、在二维表中,元组的______不能再分成更小的数据项。
标准答案为:分量
二维表一般满足下面7个性质:
1、二维表中元组的个数是有限的--元组个数有限性。
2、二维表中元组均不相同--元组的惟一性。
3、二维表中元组的次序可以任意交换--元组的次序无关性。
4、二维表中元组的分量是不可分割的基本数据项--元组分量的原子性。
5、二维表中属性名各不相同--属性名惟一性。
6、二维表中属性与次序无关,可任意交换--属性的次序无关性。
7、二维表中属性的分量具有与该属性相同的值域--分量值域的同一性。
40、软件工程三要素包括方法、工具和过程,其中,______支持软件开发的各个环节的控制和管理。 标准答案为:过程
软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。
41、有如下程序:
#include
using namespace std;
class Wages{ //"工资"类
double base; //基本工资
double bonus; //奖金
double tax; //税金
public:
Wages(double CBase,double CBonus,double CTax):
base(CBase),bonus(CBonus),tax(CTax){}
double getPay()const; //返回应付工资额
Wages operator+(Wages w)const; //重载加法
};
double Wages::getPay()const{return base+bonus-tax;} Wages Wages::operator+(Wages w)const{
return Wages(base+w.base, bonus+w.bonus,tax+w.tax); }
int main(){
Wages w1(2000,500,100),w2(5000,1000,300);
cout<<(w1+w2).getPay()<=x1;i--)
a[______]=a[i];
标准答案为:i+x2-x1 或 x2-x1+i
本题主要考查了数组。
将下标x1开始的k个元素移动到从下标x2开始的k个元素,也就是将下标为i(x1?i?x1+k-1)的元素逐一向后方移(x2-x1)个数,即移动到下标为(i+x2-x1)的单元,所以循环体中的语句应该为a[i+x2-x1]=a[i];
或a[x2-x1+i]=a[i];。故横线处应填入i+x2-x1或x2-x1+i。
44、重载加法运算符"+",其函数名是______。
标准答案为:operator +
本题主要考查了运算符重载。
C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator。故横线处应填入operator +。
45、有如下程序:
#include
using namespace std;
int fun1(int x) {return ++x;}
int fun2(int &x) {return ++x;}
int main(){
int x=1,y=2;
y=fun1(fun2(x));
cout<
using namespace std;
class pumpkin{
public:
pumpkin(){++count;}
~pumpkin(){--count;}
static void total_count(){
cout<data=data;
本题主要考查了变量的作用域和可见性。
类Sample的数据成员data具有类作用域,成员函数SetData的形参data具有块作用域,该类作用域包含块作用域,因为在两个或多个具有包含关系的作用域中声明了同名标识符,则外层标识符在内层不可见,所以在成员函数SetData中直接使用data引用的是形参变量data而不是Sample类的数据成员data。此时,有两个方法可以引用到Sample类的数据成员:一是通过this指针,在类的成员函数中this指针是成员函数所属对象的指针,它指向类对象的地址,故横线处可以填this->data=data。二是通过作用域运算符"::"明确指出访问的是Sample类的成员,故还可以填Sample::data=data。
49、有如下程序:
#include
using namespace std;
class Pet{
char name[10];
public:
Pet(char *name){ strcpy(this->name,name);}
const char *getName()const{return name;}
virtual void call()const=0;
};
class Dog: public Pet{
public:
Dog(char *name):Pet(name){}
void call()const{ cout<<"汪汪叫";}
};
class Cat:public Pet{
public:
Cat(char *name):Pet(name){}
void call()const{ cout<<"喵喵叫";}
};
int main(){
Pet *pet1=new Dog("哈克"), *pet2=new Cat("吉米");
cout<getName();pet1->call();cout<getName();pet2->call();cout< <函数名>(<形参列表>){<函数体>}
<返回类型>又称函数类型,表示一个函数所计算(或运行)的结果值的类型。如果一个函数仅用来更新(或设置)变量值、显示信息等,不返回任何值,则该函数返回类型为void类型。故横线处应填入void。