2012年3月全国计算机等级考试二级C++语言程序设计笔试试卷
-
正方形类的定义如下,请将横线处缺失部分补充完整。
class Square{
private:
double width;
public:
Square(double w):width(w){}
//重载大于运算符">",用于比较两个正方形的大小,函数结果类型为bool类型
__________(Square& s);
};
-
有如下程序,请将横线处缺失部分补充完整。
#include
using namespace std;
template
class Dataset{
T *data;
int size;
public:
Dataset(T* arr, int length): size(length){
data=new T[length];
for(int i=0; i
data[i]=arr[i];
}
};
int main( ){
int arr[]={2, 4, 6, 8, 10};
//利用数组arr初始化类模板Dataset的对象set
__________
return 0;
}
-
形状类Shape中包含一个纯虚函数draw,它无形参和返回值,则draw函数在Shape类中的原型声明是__________。
-
类Base、Component和Derived的定义如下,请将横线处缺失部分补充完整。
class Base{
double data;
public:
Base(double d):data(d){ }
};
class Component{
int data;
public:
Component(int d):data(d){ }
};
class Derived:public Base{
Component com;
char character;
public:
Derived(double a,int b,char c);
//使用参数a初始化基类成员,使用参数b初始化成员对象com
__________,character(c){ }
};
-
有如下程序:
#include
using namespace std;
class Machine{
static int num;
public:
Machine( ){num++;}
static void showNum( )
{cout<
};
int Machine::num=0;
int main( ){
Machine a[10], b;
Machine::showNum( );
return 0;
}
运行这个程序的输出结果是__________。
-
调用时不必提供参数的构造函数称为__________构造函数。
-
break语句可用于循环语句和__________语句中。
-
如果P是指向一个动态数组空间的指针变量,则释放该数组空间的语句是__________。
-
如果一个函数在其函数体内直接或间接地调用自己,则该函数称为__________函数。
-
常见的软件工程方法有结构化方法和面向对象方法,类、继承以及多态性等概念属于__________。
-
如果a为int型变量,b为double型变量,则表达式a+b的值的类型为__________。
-
在将E-R图转换到关系模式时,实体和联系都可以表示成__________。
-
数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是__________。
-
设循环队列的存储空间为Q(1:30),初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有__________个元素。
-
在长度为n的顺序存储的线性表中删除一个元素,最坏情况下需要移动表中的元素个数为__________。
-
有如下程序:
#include
using namespace std;
class Mountain{
int height;
public:
Mountain(int h=0): height(h){ }
virtual char *GetName( )const
{return "山";}
int GetHeight( ) const{return height;}
};
class Lushan:public Mountain{
public:
Lushan(int d):Mountain(d){ }
char *GetName( )const
{return "庐山";}
};
int main( ){
Mountain *p= new Lushan(1000);
cout<
GetName( )<<"海拔"< return 0;
}
运行这个程序的输出结果是__________
- A.庐山海拔1000米
- B.庐山海拔0米
- C.山海拔1000米
- D.山海拔0米
-
下列控制对齐方式的操作符中,错误的是__________
- A.internal
- B.center
- C.left
- D.right
-
已知类MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行:
MyClock c1, c2;
//......
c2=c1+10;
由此可知,为类MyClock重载的"+"运算符函数的声明是__________
- A.friend MyClock operator+(MyClock, int);
- B.friend MyClock operator+(MyClock, MyClock);
- C.friend MyClock operator+(int, MyClock);
- D.MyClock operator+(MyClock);
-
有如下类定义:
class Animal{
public:
virtual void Name( )=0;
};
class Koala:public Animal{
public:
void Name( ){/*函数体略*/}
};
关于上述类定义,下列描述中错误的是__________
- A.类Koala是类Animal的派生类
- B.类Koala中的Name函数是一个虚函数
- C.类Animal中的Name函数是一个纯虚函数
- D.语句“Animal a;”能够建立类Animal的一个对象a
-
有如下程序:#include using namespace std;class Base{public:virtual void Show( ){cout<<'B';}};class Derived:public Base{public:void Show( ){cout<<'D';}};int main( ){Base *p1=new Derived;Derived *p2=new Derived;p1->Show( );p2->Show( );delete p1;delete p2;return 0;}运行这个程序的输出结果是__________
- A.BB
- B.BD
- C.DB
- D.DD
-
有如下程序:
#include
using namespace std;
class Boat;
class Car{
public:
Car(int i): weight(i){ }
friend int Total(const Car &c, const Boat &b);//①
private:
int weight;
};
class Boat{
public:
Boat(int i): weight(i){ }
friend int Total(const Car &c, const Boat &b);
private:
int weight;
};
int Total(const Car &c, const Boat &b){//②
return c.weight+b.weight;
}
int main( ){
Car c(10);
Boat b(8);
cout<<"The total weight is"<
return 0;
}
下列关于程序的描述中,正确的是__________
- A.程序编译正确
- B.程序编译时语句①出错
- C.程序编译时语句②出错
- D.程序编译时语句③出错
-
有如下程序:
#include
using namespace std;
class Media{
public:
void Name( );
void Show( );
protected:
int page;
};
class Book:private Media{
public:
void Print( ) { cout<
void Show( ) {Media::Show( );}//①
};
int main( ){
Book Bible;
Bible.Name( );//②
Bible.Print( );//③
Bible.Show( );//④
return 0;
}
编译时有错误的是__________
- A.语句①
- B.语句②
- C.语句③
- D.语句④
-
已知类IMS中两个成员函数的声明为"void listen( ) const;"与"void speak( );",另有两个对象的定义为"IMS obj1;"与"const IMS obj2;",则下列语句中,产生编译错误的是__________
- A.obj1.listen( );
- B.obj1.speak( );
- C.obj2.listen( );
- D.obj2.speak( );
-
有如下程序:
#include
using namespace std;
class Monkey{
public:
Monkey( ) {cout<<'M';}
Monkey(char n) {cout<
~Monkey( ) {cout<<'Y';}
};
int main( ){
Monkey p1, *p2;
p2=new Monkey('X');
delete p2;
return 0;
}
运行这个程序的输出结果是__________
- A.MYX
- B.MYMY
- C.MXY
- D.MXYY
-
在C++中,打开一个文件时与该文件建立联系的是__________
- A.流对象
- B.模板
- C.函数
- D.类
-
若有函数模板mySwap和一些变量定义如下:
template
void mySwap(T X,T Y);
double d1,d2; int i1,i2;
下列对mySwap的调用中,错误的是__________
- A.mySwap(i1,i2)
- B.mySwap(d1,d2)
- C.mySwap(i1,d1)
- D.mySwap
(i2,d2)
-
在类中重载赋值运算符时,应将其声明为类的__________
- A.静态函数
- B.友元函数
- C.成员函数
- D.构造函数
-
有如下程序:
#include
using namespace std;
class XX{
int x;
public:
XX(int xx=0):x(xx){}
int getX( ){return x;}
};
class YY:public XX{
int y;
public:
YY(int xx, int yy):x(xx), y(yy){}
int getV( ){return getX( )+y;}
};
int main( ){
YY c(3, 4);
cout<
return 0;
}
运行这个程序的输出结果是__________
- A.3
- B.4
- C.7
- D.10
-
有如下程序:
#include
using namespace std;
class XA{
int a;
public:
static int b;
XA(int aa):a(an) { b++; }
int getA( ){ return a; }
};
int XA::b=0;
int main( ){
XA d1(4), d2(5);
cout<
return 0;
}
运行这个程序的输出结果是__________
- A.9
- B.11
- C.13
- D.15
-
有如下程序:
#include
using namespace std;
int main( ){
int i,s=0;
for(i=1;s<20;i+=2) s+=i*i;
cout<
return 0;
}
运行这个程序的输出结果是__________
- A.3
- B.5
- C.7
- D.9
-
若字符指针p所指向的字符串为"abcdefg",在执行语句char *ap=new char[strlen(p)+1];之后,ap指向的字符数组的元素个数为__________
- A.9
- B.8
- C.7
- D.6
-
有如下程序:
#include
using namespace std;
void fl(int& x){x++;}
void f2(int x){++x;}
int main( ){
int x=10, y=12;
f1(x);
f2(y);
cout<
return 0;
}
运行这个程序的输出结果是__________
- A.22
- B.23
- C.24
- D.25
-
若有定义"int x=4,y=5;",则表达式"y>x++?x--:y++"的值为__________
- A.3
- B.4
- C.5
- D.6
-
在开发一个c++程序的整个过程中,第3个步骤为__________
- A.链接
- B.运行
- C.编辑
- D.编译
-
若需要向一个二进制文件尾部添加数据,则该文件的打开方式为__________
- A.ios_base::app
- B.ios_base::binary | ios_base::out
- C.ios_base::out
- D.ios_base::binary | ios_base::app
-
在定义函数模板或类模板时,开头的保留字是__________
- A.typename
- B.template
- C.class
- D.typedef
-
若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是__________
- A.XV operator *(XV,XV)
- B.XV *(XV)
- C.operator *(XV)
- D.XV operator *(XV);
-
当派生类继承一个基类时,默认的继承方式为__________
- A.public
- B.protected
- C.private
- D.不确定
-
若AA为一个类,a为该类的私有整型数据成员,getA( )为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x 对象中a的值,正确的访问格式为__________
- A.AA.getA( )
- B.x.getA( )
- C.x.a
- D.AA::a
-
在软件设计中不使用的工具是__________
- A.系统结构图
- B.程序流程图
- C.PAD图
- D.数据流图(DFD图)
-
若一个函数的原型为"int * Xfun1(int x,int& y,char z);",则该函数的返回值类型为__________
- A.int *
- B.int
- C.int&
- D.char
-
在黑盒测试方法中,设计测试用例的主要根据是__________
- A.程序外部功能
- B.程序数据结构
- C.程序流程图
- D.程序内部结构
-
下面不属于需求分析阶段任务的是__________
- A.确定软件系统的性能需求
- B.确定软件系统的功能需求
- C.制定软件集成测试计划
- D.需求规格说明书评审
-
软件生命周期的活动中不包括__________
- A.软件维护
- B.需求分析
- C.市场调研
- D.软件测试
-
有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是__________
- A.并
- B.差
- C.交
- D.自然连接
-
在满足实体完整性约束的条件下__________
- A.一个关系中可以没有候选关键字
- B.一个关系中只能有一个候选关键字
- C.一个关系中必须有多个候选关键字
- D.一个关系中应该有一个或多个候选关键字
-
一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为__________
- A.4
- B.16
- C.10
- D.6
-
在下列模式中,能够给出数据库物理存储结构与物理存取方法的是__________
- A.逻辑模式
- B.概念模式
- C.内模式
- D.外模式
-
下列叙述中正确的是__________
- A.栈是一种先进先出的线性表
- B.队列是一种后进先出的线性表
- C.栈与队列都是非线性结构
- D.以上三种说法都不对
-
下列叙述中正确的是__________
- A.循环队列是队列的一种链式存储结构
- B.循环队列是一种逻辑结构
- C.循环队列是队列的一种顺序存储结构
- D.循环队列是非线性结构