国家二级(C++)机试模拟试卷227
选择题
1.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。(A)
A. 外模式/模式
B. 内模式/外模式
C. 模式/内模式
D. 内模式/模式
解析:数据库有两层映像,即外模式/模式和模式/内模式映像。模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。
2.下列关于C++函数的说明中,正确的是( )。(D)
A. 内联函数就是定义在另一个函数体内部的函数
B. 函数体的最后一条语句必须是return语句
C. 标准C++要求在调用一个函数之前,必须先声明其原型
D. 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是在定义在另一个函数体内,所以A选项错误。函数可以没有返回值,所以就不需要return了,如果被调函数在调用函数之前已经定义,那么就不需要声明,所以C选项错误,正确选项为D。
3.下列关于基类和派生类关系的叙述中,正确的是( )。(D)
A. 每个类最多只能有一个直接基类
B. 派生类中的成员可以访问基类中的任何成员
C. 基类的构造函数必须在派生类的构造函数体中调用
D. 派生类除了继承基类的成员,还可以定义新的成员
解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。
4.下列关于基类和派生类关系的叙述中,正确的是( )。(D)
A. 每个类最多只能有一个直接基类
B. 派生类中的成员可以访问基类中的任何成员
C. 基类的构造函数必须在派生类的构造函数体中调用
D. 派生类除了继承基类的成员,还可以定义新的成员
解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。
5.如果有以下定义及初始化:
int a=3,*p=&a;
则由此可以推断,*p的值是( )。(A)
A. 变量a的值,即3
B. 变量a的地址值
C. 变量P的地址值
D. 无意义
解析:此题考查的是指针变量的定义与赋初值。语句*p=&a是定义指针并且给指针赋初值,指向a,所以指针的值就是变量a的地址,*p的值就是a的值。
6.下列对模板的声明中,正确的是( )。(C )
A. template
B. template
C. template
D. template
解析:声明一个函数模板的格式为:template函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。
7.有如下类声明:
class TestClass
{
intn;
public:
TestClass(int i=0):n(i){}
void setValue(int n0);
};
下面关于setValue成员函数的实现中,正确的是( )。
B
解析:C++中类成员函数的实现形式为:
返回类型类名::成员函数名(参数列表){代码块}
8.有如下程序:
#include<iostream>
using namespace std;
int main()
{
cout.fill(’*’);
cout.width(6);
cout.fill(’#’);
cout<<888<<endl;
return 0:
}
的执行结果是( )。(A)
A. ###888
B. 888###
C. ***888
D. 888***
解析:C++在流操作中,利用cout对象的width属性设置输出字符的宽度,用fill函数来设置需要填充的字符。题目程序中,首先设置填充字符为*,输出宽度为6,但在输出前又设置了填充字符为#,所以在输出时,其填充字符为#,由于888不足6个字符,所以在前面以三个“#”来填充。
9.在关系A(S,SN,E)和关系B(E,CN,NM)扣,A的主关键字是S,B的主关键字是E,则关系A的外码是( )。(D)
A. S
B. SN
C. NM
D. E
解析:外码用于建立和加强两个关系之间的连接,通过将关系中主键值的一列或多列属性添加到另一个关系中,可建立两个关系之间的联系,这个列属性称为第二关系的外码。
10.软件详细设计产生的图如下:
(C)
A. N-S图
B. PAD图
C. 程序流程图
D. E-R图
解析:N-S图提出了用方框图来代替传统的程序流程图,所以A不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B不对。E-R图是数据库中的用于表示E-R模型的图示工具,所以D不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。
11.下列情况中,不会调用拷贝构造函数的是( )。(B )
A. 用一个对象去初始化同一类的另一个新对象时
B. 将类的一个对象赋值给该类的另一个对象时
C. 函数的形参是类的对象,调用函数进行形参和实参结合时
D. 函数的返回值是类的对象,函数执行返回调用时
解析:拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名:类名(const类名&引用对象名)。当一个类的对象赋值给该类的另一个对象时,是赋值而不是创建对象,所以不会调用拷贝构造函数。
12.下面是关于派生类声明的开始部分,其中正确的是( )。(D )
A. class virtual B:public A
B. virtual class B:public A
C. class Bpublic A virtual
D. class B:virtual public A
解析:声明派生类的一般形式为:class派生类名:【继承方式】基类名。其中继承方式包括:public,pfivate,promcmd,而virtual为C++中的关键字。虚函数的使用方法是在基类用virtu
本文档预览:3600字符,共16002字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载