国家二级C++机试(选择题)模拟试卷515
选择题
1.下列叙述中正确的是(D)
A. 一个算法的空间复杂度大,则其时间复杂度也必定大
B. 一个算法的空间复杂度大,则其时间复杂度必定小
C. 一个算法的时间复杂度大,则其空间复杂度必定小
D. 算法的时间复杂度与空间复杂度没有直接关系
解析:算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。
2.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。
3.下列关于栈的描述中错误的是( )。(B)
A. 栈是先进后出的线性表
B. 栈只能顺序存储
C. 栈具有记忆作用
D. 对栈的插入与删除操作中,不需要改变栈底指针
解析:栈是限定在一端进行插入与删除的线性表。栈顶(top):插入数据(即入栈)的一端:栈底(bottom):不能入栈也不能出栈的一端。栈存储数据的原则:“先进后出”或“后进先出”。栈的特性是具有记忆作用。
4.有以下程序,输出结果( )。
#include<iostream>
using namespace std;
class Complex
{
public:
Complex(double r=0,double i=0):re(r),im(i){}
double realoconst{return re;}
double imagoconst{return im;}
Complex operator+(Complex c)const{returnComplex(re+c.re,im+c.im);}
private:
double re,im;
};
int main()
{
Complex a=Complex(1,1)+Complex(5);
cout<<a.real()<<’+’<<a.imag()<<’i’<<endl;
return0:
}(C)
A. 6+i
B. 2i+5
C. 6+1i
D. 1i+5
解析:由主函数入手,调用“Complex a=Complex(1,1)+Complex(5);”,实际是“Complex a=Complex(1,1)+Complex(5,0);”,调用“returnComplex(re+c.re,im+c.im):”结果为:6+1i。
5.有如下两个类定义:
class AA{);
class BB{
AA vl,*v2;
BB v3:
int*v4;
);
其中有一个成员变量的定义是错误的,这个变量是( )。(C)
A. vl
B. v2
C. v3
D. v4
解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。
6.在结构化程序设计中,模块划分的原则是( )。(D)
A. 各模块应包括尽量多的功能
B. 各模块的规模应尽量大
C. 各模块之间的联系应尽量紧密
D. 模块内具有高内聚度、模块间具有低耦合度
解析:内聚性是对一个模块内部各个元素间彼此结合的紧密程度的度量。耦合性是对模块间互相连接的紧密程度的度量。在结构化程序设计中,模块划分应遵循高内聚、低耦合的原则,即减弱模块之间的耦合性和提高模块内聚性,有利于提高软件模块的独立性。
7.有如下程序:
#include<iostream>
using namespace std;
int i=1;
class Fun
{
public:
static int i;
int value(){return i-1;}
int value()const{return i+1;}
};
int Fun::i=2;
int main()
{
int i=3;
Fun fun1;
const Fun fun2;
_______
return 0:
}
若程序的输出结果是:123
则程序中横线处的语句是( )。(A)
A. cout<<fun1.value()<<Fun:i<<fun2.value();
B. cout<<Fun::i<<fun1.value()<<fun2.value();
C. cout<<fun1.value()<<fun2.value()<<Fun::i;
D. cout<<fun2.value()<<Fun::i<<fun1.value();
解析:此题因为定义的变量i是static类型的(main()函数内部的i只是一个局部变量),所以,选项A中fun1.value()的返回值是1,Fun::i引用的是外部变量会输出2;fun2.value();会调用常成员函数int value()const{return i+l;}使得外部静态变量i的值增加为3,故输出3。
8.有如下程序:
#include
using namespace std;
class AA{
int k;
protected:
int n:
void setK(int k){this一>k=k;)
public:
void setN(int n){this->n=n;)
};
class BB:public AA{/*类体略*/}
int main(){
BB x;
x.n=1; ∥1
X.setN(2); ∥2
X.k=3; ∥3
X.
本文档预览:3600字符,共10226字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载