国家二级(C++)机试模拟试卷303
选择题
1.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。(A )
A. 外模式/模式
B. 内模式/外模式
C. 模式/内模式
D. 内模式/模式
解析:数据库有两层映像,即外模式/模式和模式/内模式映像。模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。
2.友元类的所有成员函数都是另一个类的( )。(B)
A. 成员函数
B. 友元函数
C. 非成员函数
D. 非友元函数
解析:C++语言中友元类中的函数都是另一个类的友元函数。
3.有如下类定义:
class AA
{
int a;
public:
int getRef()const{return&a;}//①
int getValue()const{return a;}//②
void set(int n)const{a=n;}//③
friend void show(AA aa)const{cout<<a;}//④
};
其中四个函数的定义中正确的是( )。(B)
A. ①
B. ②
C. ③
D. ④
解析:本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。
4.下列关于this指针的描述中,正确的是( )。(D)
A. 类的成员函数都有this指针
B. 类的友元函数都有this指针
C. 任何与类相关的函数都有this指针
D. 类的非静态成员函数都有this指针
解析:this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用this指针。所以答案为D。
5.有如下函数模板:templateT square(T x){return x*x;}其中T是( )。(C )
A. 函数形参
B. 函数实参
C. 模板形参
D. 模板实参
解析:此题考查的是函数模板。声明一个函数模板的格式是:template函数声明,{函数体}其中的是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。
6.变量已正确定义为整型,则表达式“n=i=2,++i,i++;”的值为( )。(C)
A. 1
B. 2
C. 3
D. 4
解析:本题考查数据型及逗号表示式的运算。在逗号表达式中,其值取最后一个表达式的值为3。
7.有如下程序:
#include
using namespace std;
class A{
public:
virtual void funcl(){cout<<\\(C)
A. B182
B. A1A2
C. B1A2
D. A182
解析:本题考查虚函数。虚函数指在基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。题中定义了一个派生类对象B,并使用类A的对象指针指向B,由于基类A中的funcl为虚函数,所以会执行派生类的funcl,输出B1,而基类中的func2不是虚函数,所以p->runc2()会执行基类的func2,输出A2。故答案为c。
8.假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。(B )
A. MyClass(MyClass x);
B. MyClass(Myaass&=K);
C. MyClass(&x);
D. MyClass(x);
解析:拷贝构造函数也是构造函数,所以函数名字为MyClass,但它只有一个参数,这个参数是本类的对象,即x;而且采用对象的引用的形式,也就是&x。所以本题答案是B)。
9.下面叙述中错误的是( )。(A)
A. 软件测试的目的是发现错误并改正错误
B. 对被调试的程序进行“错误定位”是程序调试的必要步骤
C. 程序调试通常也称为Debug
D. 软件测试应严格执行测试计划,排除测试的随意性
解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。
10.下列关于类定义的说法中,正确的是( )。(A)
A. 类定义中包括数据成员和函数成员的声明
B. 类成员的缺省访问权限是保护的
C. 数据成员必须被声明为私有的
D. 成员函数只能在类体外进行定义
解析:类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。
11.设有以下定义和程序:
#include
class A1
{
public:
void showl()
{
cout<<“class A1”<<end1;
}
};
class A2:public A1
{
public:
void show20
{
cout<<“class A2”<<end1;
}
};
class A3:protected A2
{
public:
void show3()
{
cout<<“class A1”<<end1;
}
};
void main()
{A1 obj1;
A2 obj2;
A3 obj3:
}
则以下不合语法的调用语句是( )。(C)
A. obj1.show10;
B. obj2.show10;
C. obj3.show10;
D. obj2.show20;
解析:由于class A3:protected A2,所以类A3的对象obi3不能直接访问基类A1的成员函数showl(),所以选项C)是错误的;其他选项均有访问的权限,正确。
12.下列关于C++函数的叙述中,正确
本文档预览:3600字符,共14886字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载