国家二级C++机试(选择题)模拟试卷497
选择题
1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。
2.一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为( )。(A)
A. 219
B. 221
C. 229
D. 231
解析:在二叉树中,叶子结点个数为n0,则度为2的结点数n2=n0一1。本题中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点数+度为1的结点数+度为2的结点数=70+80+69=219。
3.以下关键字不能用来声明类的访问权限的是( )。(B)
A. public
B. static
C. protected
D. private
解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。
4.有如下类定义:
class MyClass{
int b;char a;double c;
public:
MyClass0:c(0.0),b(O),a(‘,’)()
};
创建这个类的对象时,数据成员的初始化顺序是( )。(C)
A. a,b,C
B. c,b,a
C. b,a,c
D. c,a,b
解析:类的成员初始化顺序与成员变量在构造函数中的位置先后顺序无关,只与成员变量在类中定义的先后顺序有关。
5.下面不能作为结构化方法软件需求分析工具的是( )。(A)
A. 系统结构图
B. 数据字典(D)
C. 数据流程图(DFD图)
D. 判定表
解析:按照DeMarco的定义,“结构化分析就是使用数据流图(DFD图)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。”系统结构图不能作为结构化方法软件需求分析工具。
6.有如下程序:
#include
using namespace std;
class Test
{
public:
Test() {n+=2;)
~Test() {n一3;)
static int getNum0{return n;}
private:
static int n;
);
int Test::n=l;
int main()
{
Test*P=new Test;
delete p;
cout<<\\(A)
A. n=0
B. n=l
C. n=2
D. n=3
解析:此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员n的运算具有叠加性,执行“n+=2”和“n一3”后n的值为0。
7.下列存储类标识符中,可见性与存在性不一致的是( )。(C)
A. 外部类
B. 自动类
C. 内部静态类
D. 寄存器类
解析:可见性是函数内部,存在整个程序中,第二次调用值不变。
8.有如下程序:
#include
using namespace std;
class TV{
public:
TV(int S=41):size(S){}
void Print(){cout<<’/<<‘N’<<size;}
void Print()coust{cout<<‘/’<<‘C’<<size;}
void Print(int 8){cout<<’/’/<<’S’<<size;}
private:
int size;
};
int main(){
TV rooml;
const TV room2(54);
rooml.Print();
rcom2.Pant();
return 0;
}
运行时的输出结果是( )。(A)
A. /N41/C54
B. /N41/S54
C. /CA1/N54
D. /C41/C54
解析:本题考查构造函数相关知识,本题中定义一个对象rooml,执行rooml.Print时执行构造函数给size赋值为41,然后执行void Print(){cout<<‘/’<<’N’<<size;}输出/N41。而定义const TV room2(54)时,给size赋值为54,最后输出结果为/C54,所以答案为A。
9.以下程序输出结果是( ):
#include<iostream>
using namespace std;
void add(int x,int y,int *z)
{*Z=y+x;}
int main()
{int a,b,c;
add(8,4,&a);
add(6,a,&b);
add(a,b,&c);
cout<<a<<’’,’’<<b<<’’,’’<<c<<end1;
return 0;
}(B)
A. 12,10,14
B. 12,18,30
C. 12,6,18
D. 12,14,30
解析:由主函数main入手,调用add函数,其中第三个参数为引用,即传值为地址。当add函数中第三个参数改变时,主函数中这个值也会改变。那么第一个add调用后a=12,所以第二个调用中a=12。调用后b=18。那么第三个调用后c=30。
10.若有下面的函数调用:
fun(a+b,3,max(n-1,b))
则fun的实参个数是( )。(A)
A. 3
B. 4
C. 5
D. 6
解析:此题考查的是函数的调用。C++中函数调用的一般形式为:函数名(实参表),其中实参表是用逗号分隔的一系列表达式。因此,本题中fun()函数的实参表由a+b、3和max(n-1,b)组成。
11.有如下程序:
#inc1ude<iostream>
本文档预览:3600字符,共8792字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载