国家二级C++机试(选择题)模拟试卷223
选择题
1.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为( )。(B)
A. 219
B. 229
C. 230
D. 231
解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故总结点数=叶子节点数+度为2的节点数+度为1的节点数=80+79+70=229。
2.有三个关系R、S和T如下:
(D)
A. 笛卡尔积
B. 交
C. 并
D. 自然连接
解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的有序组可知R与S进行的是自然连接操作。
3.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为( )。(B)
A. 219
B. 229
C. 230
D. 231
解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故总结点数=叶子节点数+度为2的节点数+度为1的节点数=80+79+70=229。
4.某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)( )。(D)
A. 3
B. 6
C. 8
D. 12
解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该=叉树为12层,每层只有一个结点。
5.下列数据结构中,能用二分法进行查找的是( )。(A)
A. 顺序存储的有序线性表
B. 线性链表
C. 二叉链表
D. 有序线性链表
解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素按值非递减排序(即从小到大,但允许相邻元素值相等)的表。
6.有如下类定义:
class Foo
{
public:
Foo(int v):value(v){) ∥①
~Foo(){) ∥②
private:
F000 {} ∥③
int value=0; ∥④
);
其中存在语法错误的行是( )。(D)
A. ①
B. ②
C. ③
D. ④
解析:此题考查的是类的定义。c++语言规定,在类体内不允许对所定义的数据成员进行初始化。
7.有如下头文件:
int f10;
static int f2();
class MA{
public:
int f3();
static int f4();
};
在所描述的函数中,具有隐含的this指针的是( )。(C)
A. f1
B. f2
C. f3
D. f4
解析:此题考查的是this指针。this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。题目中,只有f3()满足“类的非静态成员函数”的要求,故应选C选项。
8.下列关于C++函数的叙述中,正确的是( )。(C)
A. 每个函数至少要具有一个参数
B. 每个函数都必须返回一个值
C. 函数在被调用之前必须先声明
D. 函数不能自己调用自己
解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。
9.有如下程序:
#include
using namespace std;
class A{
public:
virtual void f(){cout<<1;}
void g(){cout<<2;}
};
class B:public A{
public:
virtual void f(){cout<<3;}
void g(){cout<<4;}
};
void show(A&a){a.f();a.g();}
int main(){
B b;
show(b);
return 0;
}
运行时的输出结果是( )。(D)
A. 12
B. 34
C. 14
D. 32
解析:在派生类class B中对基类中的虚拟成员函数virtual voidf()和实函数void g()进行了重新定义,在主函数中通过语句show(b);调用派生类中的虚函数virtual void f(){cout<<3;}输出3,调用基类的实函数void g(){cout<<2;}输出2。所以选项D为正确答案。
10.有如下程序:
#include<iostream>
using namespace std;
int main() {
int f,fl=0,f2=1;
for(int i=3;i<=6;i++) {
f=f1+f2;
f1=f2;f2=f;
}
cout<<f<<endl;
retum 0:
}
运行时的输出结果是( )。(C)
A. 2
B. 3
C. 5
D. 8
解析:在主函数中for循环语句执行4次,第一次循环结束时,变量f的值等于1,f1的值等于1,f2的值等于1;第二次循环结束时,变量f的值等于2,f1的值等于1,f2的值等于2;第三次循环结束时,变量f的值等于3,f1的值等于2,f2的值等于3:第四次循环结束时,变量f的值等于5,f1的值等于3,f2的值等于5;结束循环。
11.有如下程序:
#include
Using namespace std;
Class Amount{
int amount;
public;
Amount(int n=O):amount(n){}
Int getAmountoconst{re
本文档预览:3600字符,共5977字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载