2012年9月全国计算机等级考试二级C++语言程序设计笔试试卷
-
有如下程序:
#include
using namespace std;
class Point{
double x, y;
public:
Point(double xx=0.0, double yy=0.0): x(xx), y(yy){}
double getX( )const{return x;}
double getY( )const{return y;}
void show( )const{cout<<'('<
}
class Line{
Point p1, p2;
public:
Line(Point pp1, Point pp2): p1(pp1), p2(pp2){}
Point LeftMost( )const{
if(p1.getX( )<=P2.getX( ))return p1;
return p2;
}
}
int main( ){
Line line(Point(3.1, 5.2), Point(8.2, 4.4));
line.LeftMost( ).show( );
return 0;
}
运行这个程序的输出结果是__________。
-
有如下程序:
#include
using namespace std;
template
T Add(Tv1, Tv2){return v1+v2;}
int main( ){
cout<
return 0;
}
运行这个程序的输出结果是__________。
-
有些运算符既可以作为成员函数重载,也可以作为非成员函数重载。若在一个重载的运算符函数的定义中成功地使用了this指针,说明它是作为__________重载的。
-
有下列程序的输出结果是2334,请将横线处缺失部分补充完整。
#include
using namespace std;
class Base{
int m;
public:
Base(int k):m(k){}
int getM( )const{return m;}
}
class Derived:public Base{
int n;
public:
Derived(int k): __________ , n(k){}
int getN( )const{return n;}
}
int main( ){
Derived d1(3),d2(4);
cout<
return 0;
}
-
在C++中,编译时的多态性是通过模板或函数__________实现的。
-
有如下程序:
#include
using namespace std;
void fun(int&x, int y){
y=y+x;
x=y/4;
x++;
}
int main( ){
int x=4, y=5;
fun(x,y);
cout<
return 0;
}
运行这个程序的输出结果是__________。
-
有如下程序:
#include
using namespace std;
class A{
public:
A( ){cout<<1;}
A(const A&){cout<<2;}
~A( ){cout<<3;}
};
int main( ){
A obj1;
A obj2(obj1);
return 0;
}
运行这个程序的输出结果是__________。
-
若下列程序的输出结果是20,请将横线处缺失部分补充完整。
#include
using namespace std;
class MyClass{
public:
MyClass(int x=)10:value(x){}
void SetValue(int x){value=x; cout<
private:
int value;
};
int main( ){
MyClass*ptr=new MyClass;
__________//通过对象指针ptr调用SetValue函数
delete ptr;
return 0;
}
-
若有定义语句“int x=10;”,则表达式“x<=10?20:30”的值为__________。
-
下列语句的作用是计算正整数n的各位数字之和,例如:n=123,sum=1+2+3,请将下列语句补充完整。
do{
sum+=__________;
n=n/10;
}while(n1=0);
-
关系数据库中能实现的专门关系运算包括__________、连接和投影。
-
软件按功能通常可以分为应用软件、系统软件和支撑软件(或工具软件),Unix操作系统属于__________软件。
-
数据独立性分为逻辑独立性和物理独立性。当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序不必修改,称为__________。
-
设栈的存储空间为S(1:40),初始状态为bottom=0,top=0,现经过一系列入栈与出栈运算后,top=20,则当前栈中有__________个元素。
-
一棵二叉树共有47个结点,其中有23个度为2的结点,假设根结点在底1层,则该二叉树的深度为__________。
-
有如下程序:
#include
#include
using namespace std;
int main( ){
cout<
return 0;
}
- A.##OK123
- B.##OK#123
- C.OK##123
- D.OK##123#
-
有如下语句序列:
ifstream infile("DATA.DAT");
if(infile.good( ))cout<<"A";
else{
cout<<"B";
ofstream outfile("DATA.DAT");
if(outfile.fail( ))cout<<"C";else cout<<"D";
}
若执行这个语句序列显示的是BD,则说明文件DATA .DAT__________
- A.以读方式打开成功
- B.以读方式打开失败,但以写方式打开成功
- C.以读方式打开失败,以写方式打开也失败
- D.以读方式打开成功,以写方式打开也成功
-
有如下程序:
#include
#include
using namespace std;
class MyString{
public:
char str[80];
MyString(const char*s) {strcpy(str, s);}
MyString&operator+=(MyString a){
strcat(str, a.str);
return*this;
}
};
ostream&operator<<(ostream&s, const MyString&z){return s<
int main( ){
MyString x("abc"), y("cde");
cout<<(x+=y)<
return 0;
}
运行这个程序的输出结果是__________
- A.abc
- B.cde
- C.abcde
- D.abccde
-
有如下程序:
#include
using namespace std;
class B{
public:
virtual void f( ) {cout<<"B";}
void g( ){cout<<"B";}
}
class D;public B {
public:
void f( ){cout<<"D";}
void g( ){coun<<"D";}
}
void h(B*p){p->f( );p->g( );}
int main( ){
D obj;
h(&obj);
return 0;
}
运行这个程序的输出结果是:__________
- A.DD
- B.BB
- C.BD
- D.DB
-
有如下程序:
#include
using namespace std;
class A{
public:
- A( ){cout<, 'A';} ~A( ){cout<<'C';} };
- class B:public A{ public:
- B( ){cout<<'G';} ~B( ){cout<<'T';} };
- int main( ){
- B obj; return 0; } 运行这个程序的输出结果是__________
- A.GATC
- B.AGTC
- C.GACT
- D.AGCT
-
有如下类定义
class Test{
char a; const char b;
public:Test(char C.{a=c;b=c;}//第1行
void f(char A.const{this->a=a;}//第2行
void g(char B.{this->b=b;}//第3行
char h( )const{return a;}//第4行
};
编译时没有错误的行是__________
- A.第1行
- B.第2行
- C.第3行
- D.第4行
-
有如下程序:
#include
using namespace std;
class Base{
public;
void fun( ){cout<<'B';}
};
class Derived:public Base{
public;
void fun( ){ _______cout<<'D';}
};
int main( ){
Derived d;
d.fun( );
return 0;
}
若程序的输出结果是BD,则划线处缺失的部分是__________
- A.fun( )
- B.Base .fun( )
- C.Base::fun( )
- D.Base->fun( )
-
有如下类定义
class MyClass{
int x;
public:
MyClass( ):x(0), y(0){}
int GetX( ){return x;}
void SetX(int xx){x==xx;}
int y;
};
已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是__________
- A.obj.x;
- B.obj.y;
- C.obj.GetX( );
- D.obj.SetX(0);
-
有如下类定义:
class MyClass{
int b; char a; double c;
public:
MyClass( ):c(0.0), b(0), a(','){}
};
创建这个类的对象时,数据成员的初始化顺序是__________
- A.a,b,c
- B.c,b,a
- C.b,a,c
- D.c,a,b
-
下列类模板的定义中语法格式错误的是__________
- A.template
class Buffer{/*…*/}; - B.template
class Buffer{/*…*/}; - C.template
class Buffer{/*…*/}; - D.template
class Buffer{/*…*/};
- A.template
-
在C++中既可以用于文件输入又可以用于文件输出的流类是__________
- A.fstream
- B.ifstream
- C.ofstream
- D.iostream
-
已知基类Employees只有一个构造函数,其定义如下:Employee::Employee(int n):id(n){}Manager是Employees的派生类,则下列对Manager的构造函数的定义中,正确的是__________
- A.Manager::Manager(int n):id(n){}
- B.Manager::Manager(int n){id=n;}
- C.Manager::Manager(int n):Employee(n){}
- D.Manager::Manager(int n){Employee(n);}
-
已知将运算符“+”和“*”作为类Complete的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于__________
- A.c1.operator*(c2.operator+(c1))
- B.c1.operator+(c2.operator*(c1))
- C.c1.operator*(c1.operator+(c2))
- D.c2.operator+(c1.operator*(c1))
-
已经函数print( )没有返回值,如果在类中将之声明为常成员函数,正确的是__________
- A.void print( )const;
- B.const void print( );
- C.void const print( );
- D.void print(const);
-
下列对一维数组a的定义中,语法正确的是__________
- A.int a(10)
- B.int n=7, a[n];
- C.int n; cin>>n; int a[n];
- D.const int size=10; int a[size];
-
假设函数fun已经定义,其原型为”void fun(int a,int b=7,char *p=”**”);”,下列函数调用中错误的是__________
- A.fun(5)
- B.fun(5, 8)
- C.fun(6, ”##”)
- D.fun(0, 0.”==”)
-
有如下程序:
#include
using namespace std;
int main( ){
char a;
cin>>a;
if(a='*') cout<<"***"<
else cout<<"###"<
return 0;
}
- A.***
- B.###
- C.***###
- D.无输出
-
关键字unsigned不能修饰的类型是__________
- A.char
- B.int
- C.float
- D.long int
-
下列关于输入输出流的叙述中,正确的是__________
- A.一个文件流可以与一个数据文件相联系
- B.cin是专门从键盘输入数据的输入流类
- C.流运算符<<用来从输入流中读取数据
- D.宽度设置的效果永久有效
-
下列选项中可以做C++标识符的是__________
- A._256
- B.fat/pig
- C.delete
- D.5char
-
下列关于派生类的叙述中,错误的是__________
- A.派生类至少要有一个基类
- B.派生类中包括了从基类继承的成员
- C.一个派生类可以作为另一个派生类的基类
- D.基类成员被派生类继承以后访问权限保持不变
-
下列关于模板的叙述中,错误的是__________
- A.调用模板函数时,有时可以省略模板实参
- B.函数模板的每个实例就是一个函数定义
- C.类模板的每个实例就是一个类定义
- D.类模板的实例是一个类对象
-
下列关于运算符重载的叙述中,正确的是__________
- A.通过运算符重载机制可以为C++语言扩充新的运算符
- B.运算符重载的作用是使已有的运算符作用于类的对象
- C.重载运算符的操作数类型可以全部为基本类型
- D.所有运算符都可以重载
-
下列关于类成员对象构造函数调用顺序的叙述中,正确的是__________
- A.与它们在初始化列表中顺序相同
- B.与它们在类中声明的顺序相同
- C.与析构函数的调用顺序相同
- D.顺序不确定
-
下列关于函数重载的叙述中,错误的是__________
- A.重载函数的参数个数可以不同
- B.重载函数的参数类型可以不同
- C.重载函数的返回值类型必须不同
- D.重载函数的参数个数或参数类型必须有所不同
-
下面属于黑盒测试方法的是__________
- A.逻辑覆盖
- B.语句覆盖
- C.路径覆盖
- D.边界值分析
-
下面不属于软件设计阶段任务的是__________
- A.数据库设计
- B.算法设计
- C.软件总体设计
- D.制定软件确认测试计划
-
软件需求规格说明书的作用不包括__________
- A.软件可行性研究的依据
- B.用户与开发人员对软件要做什么的共同理解
- C.软件验收的依据
- D.软件设计的依据
-
有两个关系R和S如下:
则由关系R得道关系S的操作是__________
- A.自然连接
- B.选择
- C.并
- D.投影
-
数据字典(DD)所定义的对象都包含于__________
- A.程序流程图
- B.数据流图(DFD图)
- C.方框图
- D.软件结构图
-
在关系数据库中,用来表示实体间联系的是__________
- A.二维表
- B.树状结构
- C.属性
- D.网状结构
-
公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是__________
- A.m:1联系
- B.1:m联系
- C.1:1联系
- D.m:n联系
-
下列关于栈的叙述中,正确的是__________
- A.栈顶元素一定是最先入栈的元素
- B.栈操作遵循先进后出的原则
- C.栈底元素一定是最后入栈的元素
- D.以上三种说法都不对
-
下列链表种,其逻辑结构属于非线性结构的是__________
- A.循环链表
- B.双向链表
- C.带链的栈
- D.二叉链表
-
设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为__________
- A.16
- B.20
- C.0或35
- D.15