国家二级(C++)机试模拟试卷478
选择题
1.if语句的语法格式可描述为:
格式1:if()
或
格式2:if()
else
关于上面的语法格式,下列表述中错误的是( )。(A)
A. 部分可以是一个if语句,例如if(if(a=0)…)…
B. 部分可以是一个if语句,例如if(…)if(…)…
C. 如果在前加上逻辑非运算符!并交换和的位置,语句功能不变
D. 部分可以是一个循环语句,例如if(…)while(…)…
解析:本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。
2.以下程序的执行结果为( )。
#include
class Sample
{
int n;
public:
Sample(int i){n=i;)
operator++(){n++;) //前缀重载运算符
operator++(int){n+=2;} //后缀重载运算符
void disp()
{
cout<<\\(A)
A. n=4
n=3
B. n=l
n=2
C. n=3
n=4
D. n=5
n=6
解析:此题考查的是“++”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数:int。本题中, A(2)首先给n赋值2,语句A++,调用的是后缀运算符重载语句,使得n加2变为4。B(2)首先给n赋值2,然后语句++B,调用前缀运算符重载函数,使得n加1。因此最终的输出结果是n=4 n=3。
3.下面的函数调用为:
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个。
4.有如下程序:
#include
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<<val;
return 0;
}
void function(double val)
{val = 3;}
编译运行这个程序将出现的情况是( )。(D)
A. 编译出错,无法运行
B. 输出:3
C. 输出:3.0
D. 输出一个不确定的数
解析:本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选项正确。
5.下面关于虚函数的描述中,正确的是( )。(A)
A. 基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明
B. 虚函数是非成员函数
C. 虚函数是static类型的成员函数
D. 派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型
解析:虚函数是非static类型的成员函数,基类中可以利用Virtual关键字来声明虚函数,派生类中定义相同原型函数时可不必加vinual说明,直接重写基类中的函数。在派生类中的虚函数必须与基类中的虚函数具有相同的参数个数与类型。
6.类中的一个字符指针成员指向具有m个字节的存储空间时,它所能存储的字符串的最大长度为( )。(B )
A. m-2
B. m一1
C. m
D. m+1
解析:在c++中,字符串以*\0作为字符串结束的标志,所以个数为m-1。
7.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。(C)
A. 10
B. 8
C. 6
D. 4
解析:根据二叉树的基本性质3:在任意一颗二又树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6个。
8.下列关于类定义的说法中,正确的是( )。(A)
A. 类定义中包括数据成员和函数成员的声明
B. 类成员的缺省访问权限是保护的
C. 数据成员必须被声明为私有的
D. 成员函数只能在类体外进行定义
解析:类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。
9.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。
10.在声明派生类时,如果不显示地给出继承方式,缺省的类继承方式是私有继承private。
已知有如下类定义:
class TestClass{
protected:
void fun(){}
};
class TestClass 1:TestClass {}
则TestClass类中的成员函数fun(),TestClassl类中的访问权限是( )。(B)
A. public
B. private
C. protected
D. Virtual
解析:程序中的TestClassI为TestClass的派生类,如果不写继承方式,则默认为private,所以TestClassl私有继承TestClass,对于基类中的保护成员,继承类的访问权限为private。所以选择B)。
11.有如下程序:
#include
using namespace std;
class Base{
public:
void output(){cout<<l;}
virtual void Print(){eout<<’B’;}
};
class Derived:public Base{
public:
void output(){cout<<2;}
void Print(){cout<<’D’;}
};
int main()
{
Base * ptr=new Derived:
本文档预览:3600字符,共16139字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载