国家二级(C++)机试模拟试卷251
选择题
1.程序流程图中带有箭头的线段表示的是( )。(C)
A. 图元关系
B. 数据流
C. 控制流
D. 调用关系
解析:在数据流图中,用标有名字的箭头表示数据流 在程序流程图中,用标有名字的箭头表示控制流。所以选择C。
2.以下程序的执行结果为( )。
#include
c lass Sample
{
int n:
public:
Sample(int i){n=i;}
operator++(){n++;} //前缀重载运算符
operator++(int){n+=2;} //后缀重载运算符
void disp()
{
cout<<“n=”<<n<<endl:
}
};
void main()
{
Sample A(2),B(2);
A++:
++B:
A.disp0;
B.disp0;
}(A )
A. n=4
B. n=1
C. n=3
D. n=5 n=3 n=2 n=4 n=6
解析:此题考查的是“++”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数:int。本题中,A(2)首先给n赋值2,语句A++,调用的是后缀运算符重载语句,使得n加2变为4。B(2)首先给n赋值2,然后语句++B,调用前缀运算符重载函数,使得n加1。因此最终的输出结果是n=4 n=3。
3.对下列二树进行前序遍历的结果为( )。
(B)
A. ABCDEFGH
B. ABDGEHCF
C. GDBEHACF
D. GDHEBFCA
解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:
①前序,访问根→按前序遍历左子树→按前序遍历右子树。
②中序,按中序遍历左子树→访问根→按中序遍历右子树。
③后序,按后序遍历左子树→按后序遍历右子树→访问根。
所以对该二叉树的中序遍历结果为ABDGEHCF。
4.有如下程序:
#include
using namespace std;
class Test{
public:
Test() {n+=2;}
~Test() {n-=3;}
static int getNum(){retum n;}
private:
static int n:
};
int Test::n=1;
int main()
{Test*p=new Test;
delete p;
cout<<\\(A)
A. n=0
B. n=1
C. n=2
D. n=3
解析:语句Test*p=new Test;会调用类的构造函数1\\
5.已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则( )。(D)
A. FA必须定义在FB之前
B. FB必须定义在FA之前
C. 若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D. 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
解析:主要考查函数调用时,是否设置函数原型。在C++中若被调用的函数放在主调函数之后,需将被调用函数原型放在主调函数之前,否则不需要。
6.在C++中,实现封装性需借助于( )。(B)
A. 枚举
B. 类
C. 数组
D. 函数
解析:此题考查的是C++语言中对象概念的理解。所谓封装性是指将数据和算法捆绑成一个整体,这个整体就是对象。C++语言通过建立用户定义类型“类”来支持封装性和信息隐藏。
7.下列有关类继承的叙述中,错误的是( )。(D)
A. 继承可以实现软件复用
B. 虚基类可以解决由多继承产生的二义性问题
C. 派生类构造函数要负责调用基类的构造函数
D. 派生类没有继承基类的私有成员
解析:3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。
8.下列叙述中正确的是( )。(C)
A. C程序中的注释只能出现在程序的开始位置和语句的后面
B. C程序书写格式严格,要求一行内只能写一个语句
C. C程序书写格式自由,一个语句可以写在多行上
D. 用C语言编写的程序只能放在一个程序文件中
解析:在程序中注释部分对程序的运行结果不产生任何影响,增加了程序的易读性,它可以出现在任意位置,并且书写自由,一行内可以写多个语句,语句可以写在多行上;由于C语言编写的程序有很多的移植性,可以被多个程序文件引用。
9.计算数列第n项的函数定义如下:
int fa(int n){
if(n==1)return 1;
else return 3*fafa(n-1)+2;
}
若执行函数调用表达式fa(4)时,返回的函数值为( )。(A)
A. 53
B. 17
C. 23
D. 49
解析:题意中fa()函数是一个递归函数,当参数n大于1时,函数返回值为3*fa(n—1)+2,当n等于1时,函数返回值为1,所以fa(4)=3*fa(3)+2=3*(3*fa(2)+2)+2=3*(3*(3*la(1)+2)+2)+2=3*(3*(3+2)+2)+2=53。本题答案为A选项。
10.有如下程序:
#include
#include
using namespace std;
class Instrument{
public:
Instrument(string t=\\(B)
A. 乐器-星空
B. 乐器-无名
C. 钢琴-星空
D. 钢琴-无名
解析:本题考查派生类的应用,本题中基类Instrument,派生类Piano,当定义Instrument*pi=newPiano(\\
11.若有下列定义
int x[10],*pt=x;
则对x数组元素的正确引用是( )。(B)
A. *&
本文档预览:3600字符,共13682字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载