国家二级(C++)机试模拟试卷253
选择题
1.有如下程序:
#include<iostream>
using namespace std;
class TestClass{
public:
~TestClass (){cout<<’’BASE’’;}
};
class TestClass1:public TestClass{
public:
~TestClass1 (){cout<<’’DERIVED’’;}
};
int main(){TestClass1 x;return 0;}
执行后的输出结果是( )。(D)
A. BASE
B. DERIVED
C. BASEDERIVED
D. DERIVEDBASE
解析:程序中的TestClassl为TestClass的派生类,从程序中的main函数入手,定义了TestClassl对象x。调用析构函数的顺序,先执行派生类自己的析构函数,对派生类新增加的成员进行清理,然后调用子对象的析构函数,对子对象进行清理,最后调用基类的析构函数,对基类进行清理。这里派生类中析构函数输出DERIVED,基类析构函数输出BASE。
2.下列关于基类和派生类关系的叙述中,正确的是( )。(D)
A. 每个类最多只能有一个直接基类
B. 派生类中的成员可以访问基类中的任何成员
C. 基类的构造函数必须在派生类的构造函数体中调用
D. 派生类除了继承基类的成员,还可以定义新的成员
解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。
3.以下程序的输出的结果是( )。
#include
int x=3;
void main()
{
void fun();
hat i;
for(i=1;i<x;i++)
fun();
}
void fun0
{static int x=1;
x*=X+1:
cout<<x<<“”;
}(C)
A. 3,3
B. 2,2
C. 2,6
D. 2,5
解析:由主函数入手,在for循环中调用fun函数,其中调用次数为2次。fun中x为静态变量,有效到文件结束,所以第一次调用为X=X*(x+1)=1*(1+1)=2,第二次调用2*(2+1)=6。
4.有如下程序:
#include<iostream>
using namespace std;
class Base
{
public:
void fun1(){cout<<\\(B)
A. Base
Base
B. Base
Derived
C. Derived
Base
D. Derived
Derived
解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个派生类对象obj,执行f函数后,将派生类对象obj转化为基类对象,由于fun1不是虚函数,所以输出基类的fun1;而fun2是虚函数,所以输出派生类的fun2,所以本题答案为B。
5.有如下程序:
#include
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<<val;
return 0;
}
void function(double val)
{val = 3;}
编译运行这个程序将出现的情况是( )。(D)
A. 编译出错,无法运行
B. 输出:3
C. 输出:3.0
D. 输出一个不确定的数
解析:本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选项正确。
6.下列有关继承和派生的叙述中,正确的是( )。(D)
A. 如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员
B. 派生类的成员函数可以访问基类的所有成员
C. 基类对象可以赋值给派生类对象
D. 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
解析:私有继承方式为基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有i但派生类对象可以访问基类的保护成员,所以基类对象不能赋值给派生类对象p抽象类是指含有纯虚拟函数的类,所以选项D正确。
7.下列语句中,错误的是( )。(B)
A. const int buffer=-256;
B. const int temp;
C. const double*point;
D. const double*rt=new double(5.5);
解析:符号常量声明语句的语法格式是:const类型名符号常量=初值表达式,选项B)中未给常变量赋初值,故错误;而选项C)中定义的是一个指向浮点型常量的指针,而不是定义一个浮点型常量,所以可以不赋初值。
8.下列符号中可以用做C++标识符的是( )。(A)
A. _radius
B. foo~bar
C. else
D. 3room
解析:本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项B包含了字符“~”,选项C是关键字,选项D不能以数字开头。故答案为A。
9.有如下类定义:
class AA{
int a:
public:
AA(int n=0):a(n){}
};
class BB:public AA{
public:
BB(int n)_________
};
其中横线处缺失的部分是( )。
B
解析:本题考查公用继承对基类成员的&访问属性。公用继承中,基类的公用成员和保护成员&在派生类中保持原有访问属性,其私有成员仍为基类&私有,本题中若要给派生类继承下来基类的私有成员&赋值,那么只能调用基类的成员函数来对它赋值,所以&本题答案为B。
10.有如下程序
本文档预览:3600字符,共17118字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载