国家二级(C++)机试模拟试卷515
选择题
1.以下程序的输出的结果是( )。
#include
intx=3:
void main()
{
void fun();
int i;
for(i=l;i<x;i++)
fun();
}
void fun()
{
static int x=l;
x*=x+1:
cout<<x<<””;
}(C)
A. 3,3
B. 2,2
C. 2,6
D. 2,5
解析:由主函数入手,在for循环中调用fun函数,其中调用次数为2次。fun中x为静态变量,有效到文件结束,所以第一次调用为x=x*(x+1)=1*(1+1)=2,第二次调用2*(2+1)=6。
2.有如下类定义:
class Test
{
public:
Test(){a=0;c=0;}//①
int f(int a)const{this->a=a;}//②
static int g(){return a;}//③
void h(int b){Test::b=b;};//④
private:
int a;
static int b;
const int c;
};
int Test::b=0;
在标注号码的行中,能被正确编译的是( )。(D)
A. ①
B. ②
C. ③
D. ④
解析:只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为c。①通过默认构造函数初始化c,所以不正确。常成员函数只能引用本类中数据成员,而不能修改它,所以②不正确。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员,所以③错误。
3.有如下程序:
#include
using namespace std;
class Base
{
public:
void fun1() { cout<<\\(B)
A. Base
Base
B. Base
Derived
C. Derived
Base
D. Derived
Derived
解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个派生类对象obj,执行f函数后,将派生类对象obj转化为基类对象,由于fun1不是虚函数,所以输出基类的fun1;而fun2是虚函数,所以输出派生类的fun2,所以本题答案为B。
4.按照软件测试的一般步骤,集成测试应排列在( )之后。(A)
A. 单元测试
B. 系统测试
C. 验收测试
D. 以上均不正确
解析:软件测试过程分4个步骤进行,单元测试、集成测试、验收测试和系统测试,由此可看出集成测试在单元测试之后进行。
5.有如下程序:
#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选项正确。
6.下列关于派生类构造函数和析构函数的说法中,错误的是( )。(D)
A. 派生类的构造函数会隐含调用基类的构造函数
B. 如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C. 在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D. 在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。
7.算法的空间复杂度是指( )。(A)
A. 算法在执行过程中所需要的计算机存储空间
B. 算法所处理的数据量
C. 算法程序中的语句或指令条数
D. 算法在执行过程中所需要的临时工作单元数
解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A。
8.有如下程序:
#jnclude<iostream>
using namespace std;
class Part {
public:
Part(int x=0):val(x) {cout<<val;}
~Par/( ) {cout<<val:}
private:
int val;
};
class Whole{
public:
Whole(int x,int y,int z=0):p2(x),p1(y),val(z){cout<<val;}
~Whole(){cout<<val;}
private:
Part p1,p2;
int val;
};
int main( )
{
Whole obj(1,2,3);
return 0;
}
执行这个程序的输出结果是( )。(B)
A. 123321
B. 213312
C. 213
D. 123123
解析:本题考查带参数的构造函数。本题中定义了一个对象obj,那么执行其构造函数,初始化p1,p2的顺序是由声明这两个成员的顺序决定的,而不是由参数化列表顺序决定,所以本题中,会先执行p1,输出2,然后执行p2输出1,然后输出3,最后一次输出312。所以本题答案为B。
9.有如下类定义:
class Point {
private:
<本文档预览:3600字符,共18484字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载