国家二级(C++)机试模拟试卷285
选择题
1.下列哪一条不属于数据库设计的任务?( )(A)
A. 设计数据库应用结构
B. 设计数据库概论结构
C. 设计数据库逻辑结构
D. 设计数据库物理结构
解析:数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。
2.下列有关数据库的描述,正确的是( )。(B)
A. 数据库设计是指设计数据库管理系统
B. 数据库技术的根本目标是要解决数据共享的问题
C. 数据库是一个独立的系统,不需要操作系统的支持
D. 数据库系统中,数据的物理结构必须与逻辑结构一致
解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。
3.以下程序的输出的结果是( )。
#include
void main()
{ int a,b,c,d(5);
c=2,c+=10;
a=b=10:
a*=2;
b/=2;
c%=2;
cout<<a<<\\(A)
A. 20,5,0
B. 20,7,0
C. 20,5,1
D. 5,20,0
解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0.所以输出值20,5,0。
4.派生类的构造函数的成员初始化列表中,不能包含( )。(C)
A. 基类的构造函数
B. 派生类中子对象的初始化
C. 基类中子对象的初始化
D. 派生类中一般数据成员的初始化
解析:在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。
5.下面的函数调用为:
fun(x+y,3,min(n-1,y))则fun的实参个数是( )。(A)
A. 3
B. 4
C. 5
D. 6
解析:在C++中,是由逗号分开的,分别说明函数的各个参数。在fun()函数中它包括三个形参:x+y,3和min(n-1,y);当调用一个函数时,实参与形参一对一匹配,所以实参个数也是3个。
6.下列说法中错误的是( )。(B)
A. 公有继承时基类中的public成员在派生类中仍是public的
B. 公有继承时基类中的private成员在派生类中仍是private的
C. 私有继承时基类中的public成员在派生类中是private的
D. 保护继承时基类中的public成员在派生类中是protected的
解析:此题考查的是继承时基类成员属性改变。选项B)中,公有继承时基类中的private成员在派生类中不是private的,而是不可访问的。所以选项B)错误;其他选项叙述均正确。
7.有如下程序:
#include
using namespaee std;
class Musie }
public:
void setTitle(char*str){strepy(title,str);}
protected:
char type[10];
private:
char title[20];
};
class Jazz:public Music{
public:
void set(char*str){
strcpy(type,\\(C)
A. 程序编译正确
B. 程序编译时语句①出错
C. 程序编译时语句②出错
D. 程序编译时语句①和②都出错
解析:本题考查公用继承和保护继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。保护成员不能被类外访问,但是可以被派生类的成员函数访问。Type成为派生类的保护成员,可以被派生类访问,title仍为基类私有,派生类不能直接访问。所以答案为c。
8.C++中的模板包括( )。(C)
A. 对象模板和函数模板
B. 对象模板和类模板
C. 函数模板和类模板
D. 变量模板和对象模板
解析:本题考查函数模板和类模板,所以答案为C。
9.下列关于线性表的叙述中,不正确的是( )。(C)
A. 线性表可以是空表
B. 线性表是一种线性结构
C. 线性表的所有结点有且仅有一个前件和后件
D. 线性表是由n个元素组成的一个有限序列
解析:线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C)是错误的。
10.将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为( )。(B)
A. operator+(operator*(y,z))
B. x.operator+(operator*(y,z))
C. x.operator+(x*(y,z))
D. x+(operator*(y,z))
解析:在定义了重载运算符后的函数后,函数operator+重载了运算符“+”。如果在类以外的其他地方定义了一个函数,在类体中用friend对该函数进行声明,此函数就称为本类的友员函数。“*”用友元函数重载就是运算符函数不作为成员函数,而把它放在类外,“*”被改写为“operator*”。“+”为成员函数重载,x.operator+。所以x+y*z被改写为“x.operator+(operator*(y,z))”。
11.有如下程序:
#include
using namespace std;
long fun(int n)
{if(n>2)
retum(fun(n-1)+fun(n一2));
else
return2;
}
int main()
{cout<<fun(3)<<endl;
return 0;
}
则该程序的输出结果应该是( )。(C)
A. 2
B. 3
C. 4
D. 5
解析:主函数中调用fun(3),在fun内部当
本文档预览:3600字符,共16813字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载