国家二级C++机试(选择题)模拟试卷476
选择题
1.下面叙述中正确的是( )。(A)
A. 线性表是线性结构
B. 栈与队列是非线性结构
C. 线性链表是非线性结构
D. 二叉树是线性结构
解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。
2.若有定义语句“int i=2,j=3;”,则表达式i/j的结果是( )。(A)
A. 0
B. 0.7
C. 0.66667
D. 0.66666667
解析:由于变量i、j都是整型变量,所以两者相除所得的商也是整型数据。
3.下列叙述中正确的是( )。(B)
A. 有一个以上根结点的数据结构不一定是非线性结构
B. 只有一个根结点的数据结构不一定是线性结构
C. 循环链表是非线性结构
D. 双向链表是非线性结构
解析:在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。
4.下列语句中,错误的是( )。(D)
A. const int buffer:256;
B. const double,lc point:
C. int const buffer:256;
D. double*const point:
解析:const是一个C++关键字,用于限定不允许改变的变量。选项B是指向常量的指针,定义时可以不初始化;选项D是指针常量,定义时必须初始化。故答案为D。
5.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)( )。(D)
A. 3
B. 4
C. 6
D. 7
解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。
6.面向对象方法中,继承是指( )。(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
7.下面不属于软件工程的3个要素是(D)
A. 工具
B. 过程
C. 方法
D. 环境
解析:软件工程的3个要素是工具、过程和方法。
8.有如下类定义:
class AA{
int a;
public:
AA(int n=0):a(n){}
};
class BB:public从{
public:
BB(int n)
};
其中横线处缺失的部分是( )。
B
解析:本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,所以本题答案为B。
9.以下程序的输出结果是( )。
#include<iostream>
using namespace std;
void fun(char**q)
{
++q;
cout<<*q<<endl;
)
main()
{
stoic char*s[]={\\(C)
A. 为空
B. HI
C. HELLO
D. TEST
解析:由程序main主函数入手,调用fun函数,在fun函数中执行“cout<<*q<<endl;”语句实现程序输出。主函数中变量char*s[]为指针数组,char**p表示p指向的字符指针数据。*p就代表p指向的字符指针。语句“p=s;”表明p指向字符指针s,而**p则是s[]中的第一个字符串“HI”。主函数将变量p传值给函数fun(char**q)中的q,在函数体内部首先执行“++q”语句,就是将q的指针指向s中的下一个字符串,即“HELLO”,所以输出语句“cout<<*q<<endl:”输出该字符串值。
10.有如下类说明:
class TestClass{
int x:
public:
TestClass(int n){x=n;}
};
class TestClass1:public TestClass{
int y;
public:
TestClass1(int a,int b);
};
在构造函数TestClass1的下列定义中,正确的是( )。
B
解析:题目中程序TestClass为基类,TestClass1为派生类,派生类构造函数的一般形式为:派生类构造函数名(总参数类表):基类构造函数名(参数列表){派生类中新增数据成员初始化语句}。派生类TestClass1的基类函数名为TestClass,总参数为int a,int b,所以选择B)。
11.下面是一个模板声明的开始部分:templatedouble…由此可知( )。(A)
A. 这可能是一个函数模板的声明
B. 这可能是一个类模板的声明
C. 这既可能是一个函数模板的声明,也可能是一个类模板的声明
D. 这肯定是一个错误的模板声明
解析:本题考查函数模板和类模板的基础知识,从ternplatedouble这里就可以看出这是一个函数模板的声明。
12.有如下类声明:
class MyBASE
{
int k:
public:
void set(int n){k=n;)
int getOconst{retum k;}
};
class MyDERIVED:protected MyBASE
{
protected:
intj;
public:
void set(int m,int n){MyBASE::set(m);j=n;}
int getoconst{return MyBASE::get0+j;}
};
则类MyDERIVED中保护的数据成员和成员函数的个数是( )。(B)
A. 4
B. 3
C. 2
D. 1
解析:此题考查的是派生与继承中的访问权限。protected派生:private->不可见: protected->priVate; public一>protected。
13.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是( )。(B)
本文档预览:3600字符,共8501字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载