第 1 页:选择题 |
第 3 页:基本操作题 |
第 4 页:简单应用题 |
第 5 页:综合应用题 |
点击查看:2016年全国计算机二级C++上机考试冲刺试题汇总
一、选择题(每小题1分,共40分)
1有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout<
};
class Derived:public Base{
public:
Derived(char C){tout<
};
int main(){
Derived dl(’B’);
retum 0;
}
执行这个程序的输出结果是( )。
A.BB.BAC.ABD.BB
参考答案:C
参考解析:本题考查派生类的构造函数和析构函数.在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数;对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个派生类对象d1,首先执行基类的构造函数,输出A;然后执行派生类的构造函数,输出B。所以答案为c。
2下列符号中能够作为C++标识符的是( )。
A.CoflstB.2aC._shapeD..Count
参考答案:C
参考解析:本题考查c++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用c++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项A是关键字,选项B不能以数字开头,选项D包含了字符”一”,且不能以此字符开头。故答案为C。
3有如下程序:
#include
using namespace std;
class Base
{
private:
void funl()const{tout<<”funl”;}
protected:
void fun2()const{tout<<”fun2”;}
public:
void fun3()const{cout<<”fhll3”;}
};
class Derived:protected Base
{
public:
void fhn4()const{cout<<”filn4”;}
};
int main()
{
Derived obj;
obj.funl();//①
obj.fun2();//②
obj.furd();//③
obj.fun4();//④
return U:
}
其中有语法错误的语句是( )。
A.①②③④B.①②③C.②③④D.①④
参考答案:B
考解析:本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以①②③错误。
4有如下程序:
#include
using namespace std;
class Instrument{
public:
virtual void Display()=0;
};
class Pian0:public Instrument}
public:
void Display(){/*函数体略*" >
};
intmain(){
Instrument S;
Instrument*P=0:
//…;
return 0;
}
下列叙述中正确的是( )。
A.语句“Insturment*P=0;”编译时出错
B.语句“Instnunent s;”编译时出错
C.类Pian0中的Display函数不是虚函数
D.类Instrument是一个虚基类
参考答案:B我
参考解析:本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类不能被实例化,所以语句“Instrmnent s;”在编译时出错。
5如下函数模板:
templateT square(T x){return x*x;} 其中T是( )。
A.函数形参B.函数实参C.模板形参D.模板实参
参考答案:C
参考解析:本题考查模板函数的基本概念,根据模板函数的定义,T是模板形参,所以答案为C。
6为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。
A.内联函数B.重载函数C.递归函数D.函数模板
参考答案:A
参考解析:一般函数进行调用时,要将程序执行权转到被调用函数中.然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将{将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。
7有如下程序:
#inClude using namespaCe std; Class Point{
publiC:
statiC int number;
publiC:
Point( )t.number++;} ~Point( ){number--;}
}; , int P0int::number=0;
int main( ){
Point *ptr:
Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’
}
Point C;
Cout<
return 0; }
执行这个程序的输出结果是( )。
A.3B.4C.6D.7
参考答案:C
参考解析:本题考查默认构造函数.题目中定义.个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。
8有三个关系R、S和T如下.
由关系R和s通过运算得到关系T,则所使用的运算为( )。
A.并B.自然连接C.笛卡尔积D.交
参考答案:D
参考解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以8错误。笛卡尔积是用R集合中元素为第一元素,s集合中元素为第二元素构成的有序对,所以C错误。根据关系T可以很明显地看出是从关系R 与关系s中取得相同的关系组所以取得是交运算,选择D。
9下列符号中,正确的c++标识符是( )。
A.enumB.2bC.f00一9D._32
参考答案:D
参考解析:本题考查c++标识符的命名规则,规定如下:①所有标识符可以由字母、数字和下画线组成,且必须以字母或F画线开头;②c++的关键字不能作为标识符;③大、小写字母表示不同意义,即代表不同的标识符,如mun和Mu0。A选项是C++的关键字,B选项不能以数字开头,C选项“一”不能用于组成标识符。
10下列关于C++预定义流对象的叙述中,正确的是( )。
A.Cin是C++预定义的标准输入流对象
B.Cin是C++预定义的标准输入流类
C.Cout是C++预定义的标准输入流对象
D.Cout是C++预定义的标准输入流类
参考答案:A
参考解析:cin是C++预定义的标准输入流对象,tOUt是C++预定义的标准输出流对象。
11下列情况中,不会调用拷贝构造函数的是( )。
A.用一个对象去初始化同一类的另一个新对象时
B.将类的一个对象赋值给该类的另一个对象时
C.函数的形参是类的对象,调用函数进行形参和实参结合时
D.函数的返回值是类的对象,函数执行返回调用时
参考答案:B
参考解析:本题考查复制构造函数,在以下3种情况下使用:①程序中需要新建立一个对象,并用另一个对象对它初始化;②函数的参数为类的对象;③函数的返回值是类的对象。其中B选项是由赋值运算符重载实现的。
12下列叙述中正确的是( )。
A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D.线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性
参考答案:B
参考解析:线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。
13类的析构函数的作用是( )。
A.一般成员函数的初始化B.类的初始化C.对象的初始化D.删除类创建的对象
参考答案:D
参考解析:析构函数就是用来释放对象的.它的调用完成之后,对象也就消失了,相应的内存空间也被释放了。
14下列运算符不能重载为友元函数的是( )。
A.=()( )->B. + - ++ --C.> < >= <=D.+= -= *=/=
参考答案:A
参考解析:关于运算符重载为友元函数有如下规定:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符“=、()、[]、->”不能重载为类的友元函数。所以本题答案为A。
15下面关于运算符重载的描述错误的是( )。
A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B.不是所有的运算符都可以进行重载
C.运算符函数的调用必须使用关键字operat。
D.在C+十语言中不可通过运算符重载创造出新的运算符
参考答案:C
参考解析:例如“::”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字0perator,而调用时可直接使用运算符。
16当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。
A.ios::inB.ios::0utC.ios::in I ios::0utD.以上都不对
参考答案:D
参考解析:
使用fstream类建立文件流必须定义打开方式,否则编译器无法判断该文件流是读还是写。
17由于常对象不能被更新,因此( )。
A.通过常对象只能调用它的常成员函数
B.通过常对象只能调用静态成员函数
C.常对象的成员都是常成员
D.通过常对象可以调用任何不改变对象值的成员函数
参考答案:A
参考解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。
18支持子程序调用的数据结构是( )。
A.栈B.树C.队列D.二叉树
参考答案:A
参考解析:栈支持子程序调用栈是一种只能在一端进行插入或删除的线性表,在主程序凋用子函数时要首先保存主程序当前的状态,然后转去执行子程序.最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。
19有如下类定义:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。
A.obj.fun1();B.obj.fun2();C.obj.tim3();D.ohj.fun4();
参考答案:A
参考解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数fun1,故本题答案为A。
20有如下语句序列:
Char str[10];Cin>>str;
当从键盘输入“I love this game”时,str中的字符串是( )。
A.”I love this game”B.”I love thi”C.”I love”D.”I”
参考答案:D
参考解析:cin是c++预定义的标准输入流对象,cin用来接收字符串时,遇“空格”、“TAB”、“回车”时都会结束。所以本题答案为D。第20题 笔记记录我的笔记(0) | 精选笔记(4)选择笔记标签:试题内容(3)答案解析(1)
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |