国家二级C++机试(选择题)模拟试卷228
选择题
1.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( )。(D)
A. 快速排序
B. 冒泡排序
C. 直接插入排序
D. 堆排序
解析:除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n一1)/2。
2.如果有以下定义及初始化:
int a=3,*p=&a;
则由此可以推断,*p的值是( )。(A)
A. 变量a的值,即3
B. 变量a的地址值
C. 变量P的地址值
D. 无意义
解析:题目中的定义初始化是定义一个整型变量a,初始化为3。而“int*p=&a;”是定义一个整型指针变量p,将变量a的地址作为指针变量p的初值。木p是指针变量p指向的存储单元的内容,即变量值。所以木p指向a的值3。
3.软件是指( )。(D)
A. 程序
B. 程序和文档
C. 算法加数据结构
D. 程序、数据与相关文档的完整集合
解析:计算机软件是计算机系统中与硬件相互依存的另一部分。是包括程序、数据与相关文档的完整集合。软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
4.假定a=3,下列程序的运行结果是( )。
#include<iostream.h>
int fun(int n);
void main()
{cout<<’’Please input a number:’’;
int a,result=0;
cin>>a;
result=fun(a);
cout<<result<<end1;
}
int fun(int n)
{iIlt p=1,result=0;
tbr(int i=1;i<=n;i++)
{
p*=i;
result+=p;
}
return result;
}(C)
A. 4
B. 8
C. 9
D. 20
解析:由程序main主函数入手,调用fun函数获得返回值result输出。题目中假定a=3,即调用语句fun(a.)中的输入参数为a,进入fun函数,在for循环中当i小于等于n,即输入参数3时,循环3次执行“p*=i;result+=p;”语句。即执行三次p=p*i,result=result+p,result的结果为9。返回的fun函数结果为9,即“cout<<result<<end1;”输出9。
5.有如下程序:
#include
using namespace std;
class Point{
public:
static int number;
public:
Pointo{number++;}
~Point(){number–;}
};
int Point∷number–0:
void mainO{
Point*ptr;
PointA,B;
{
Point*ptr_point=new Point[3];
ptx=ptr_point;
}
Point C:
Gout+Point∷number+end1;
delete[]ptr;
}
运行时输出的结果是( )。(C)
A. 3
B. 4
C. 6
D. 7
解析:此题是静态成员、对象的构造和对象的生存期等知识点的综合考查。此题定义了一个静态成员变量number,初始值为0。主函数中第2行定义了2个Point对象,此时nunlber变为2;随后new运算符又定义了一个包含3个Point对象元素的数组,其通过delete结束后number的值变为5;然后又定义了一个Point对象C,number变为6;最后输出number的内容。
6.有如下程序:
#include
using namespace std;
class Obj{
static hat i;
public:
Obj(){i++;}
~bj(){i–;}
static int getVal(){return i;}
};
int Obj∷i=0;
void f(){Obj oh2;cout<<ob2.getVal();}
int main(){
Obj ob1;
f();
Obj*ob3=new Ohj;cout<getVal();
delete ob3;cout<<Obj∷getVal();
return 0;
}
程序的输出结果是( )。(D)
A. 232
B. 231
C. 222
D. 221
解析:此题考查的是静态成员。本题中,Obj类定义了一个静态数据成员i,并初始化为0.在主函数中,首先定义了1个该类对象ob1,所以构造函数被调用1次,i加1;然后调用函数f(),该函数中又定义了一个对象ob2,此时i再次加1变为2,然后通过函数getVal()输出i的值2。f()函数结束,oh2变量被释放,故析构函数被调用了1次,i变成1:回到主函数中,又动态创建了1个对象并让oh3指向它,此后i变成2并输出。最后释放动态创建的对象i变为1,输出1。故最终的输出结果是221。
7.有三个关系R、S和T如下:
(B)
A. 自然连接
B. 差
C. 交
D. 并
解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。
8.下列关于继承的描述中,错误的是( )。(D)
A. 析构函数不能被继承
B. 派生类是基类的组合
C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员
D. 派生类中继承的基类成员的访问权限到派生类保持不变
解析:派生类中继承的基类成员的访问权限到派生类会发生变化,例如:私有继承时,派生类不能访问基类的成员,所以选项D)错误,其他选项均正确。
9.必
本文档预览:3600字符,共8187字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载