二级C++选择题专项强化真题试卷3
选择题
1.有如下程序:
#include<iostream>
using namespace std;
class Point{
int x, y;
public:
Point(int x1=0, int y1=0):x(x1), y(y1){}
int get(){return x+y;)
};
class Circle{
Point center;
int radius;
public:
Circle(int CX, int cy, int r):center(cx, cy), radius(r){}
int get(){return center. get()+radius;}
};
int main(){
circle c(3, 4, 5);
cout<<c. get()<<end1;
return ():
}
运行时的输出结果是( )。
A) 5
B) 7
C) 9
D) 12(D)
A.
B.
C.
D.
解析:
2.下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是( )。
A) cout<<internal<<12345;
B) cout<<left<<12345;
C) cout<<right<<12345;
D) cout<<setw(6)<<12345;(D)
A.
B.
C.
D.
解析:
3.在数据流图(DFD) 中,带有名字的箭头表示(D)
A. 模块之间的调用关系
B. 程序的组成成分
C. 控制程序的执行顺序
D. 数据的流向
解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
4.分布式数据库系统不具有的特点是(D)
A. 数据分布性和逻辑整体性
B. 位置透明性和复制透明性
C. 分布性
D. 数据冗余
解析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。
5.若有如下语句
#include
void main()
{
int x=3;
do{
x=x-2;
cout<<x;
}while(!(–x));
}
则上面程序段(B)
A. 输出的是1
B. 输出的是1和-2
C. 输出的是3和0
D. 是死循环
解析:do-while 语句的一般格式为do循环体语句 while(表达式);,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行x=x-2,即为1。判断表达式的值,!(–x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。
6.对于语句cout<<setfill(’*’)<<setw(10)<<1<<setfill(’*’)<<setw (2)<<2;的输出结果是(A)
A. *********1*2
B. ********12
C. *******1*2
D. 12********
解析:C++语言中setfill的意思是在空格的地方填上setfill函数中的参数字符,setw的意思是设置整个输出字符串的字符个数,本题中用*来代替空格。
7.下列关于函数参数的叙述中,正确的是(D)
A. 在函数原型中不必声明形参类型
B. 函数的实参和形参共享内存空间
C. 函数形参的生存期与整个程序的运行期相同
D. 函数的形参在函数被调用时获得初始值
解析:
8.下列关于对象初始化的叙述中,正确的是(C)
A. 定义对象的时候不能对对象进行初始化
B. 定义对象之后可以显式地调用构造函数进行初始化
C. 定义对象时将自动调用构造函数进行初始化
D. 在一个类中必须显式地定义构造函数实现初始化
解析:构造函数的作用是在对象被创建的时候对对象进行初始化。构造函数在对象被创建的时候由系统自动调用。故C项正确。
9.下列关于C++预定义流对象的叙述中,正确的是(A)
A. cin是C++预定义的标准输入流对象
B. cin是C++预定义的标准输入流类
C. cout是C++预定义的标准输入流对象
D. cout是C++预定义的标准输入流类
解析:C++流有4个预定义的流对象:cin标准输入;cout标准输出;cerr标准出错信息输出;clog带缓冲的标准出错信息输出。故选A。
10.下列循环语句中有语法错误的是(D)
A. int i;for(i=1;i<10;i++) cout<<‘*’;
B. int i,j;for(i=1,j=0;i<10;i++,j++)cout<<‘*’;
C. int i=0;for(;i<10;i++)cout<<‘*’;
D. for(1) cout<<‘*’;
解析:D项语法错误。for语句语法格式为:
for(;;)
D选项for语句中漏掉了两个分号。
11.下列是模板声明的开始部分,其中正确的是(C)
A. template<T>
B. template<class T1,T2>
C. template<class T1,class T2>
D. template<class T1;class T2>
解析:本题考核模板的声明。模板声明的开始部分为:template<类型形参表>。其中,<类型形参表>可以包含基本数据类型,也可以包含类类型。类型形参需要加前缀class。如果类型形参多于一个,则每个类型形参都要使用class。形参表中的参数是惟一的,而且至少在函数定义体中出现厂次。形参表中至少有一个形参的类型必须用<类型形参表>中的形参来定义。所以只有C选项的声明是正确的。
12.有以下类定义 classPoint{ public: Point(int x=0,int y=0){_x=x;_y=y;} void Move (int xOff,int yOff {_x +=xOff;_y+yOff} voi
本文档预览:3600字符,共9168字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载