国家二级(C++)机试模拟试卷517
选择题
1.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为( )。(A)
A. 23,13,5l,57,66,26,81,69,76
B. 13,23,26,51,57,66,81,76,69
C. 23,13,51,57,26,66,81,69,76
D. 23,13,51,57,81,26,66,69,76
解析:快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。
2.在一棵–X树上,第5层的结点数最多是( )。(D )
A. 8
B. 9
C. 15
D. 16
解析:根据二叉树的性质:二叉树第i(i>1)层上至多有21-1个结点。得到第5层的结点数最多是16个。
3.下面程序段的正确输出是( )。
int w=4,x=3,y=2,z=1; cout<<(w<x?w:z<y?z:x)<<end1;(B)
A. 0
B. 1
C. 2
D. 3
解析:本题考查表达式作为变量进行输出,且表达式为两个三目表达式的嵌套,其中,第1个三目表达式z<y?z:x的值为1,接着计算第2个三目表达式w<x?w:1,值为1。
4.有如下程序:
#include<iostrcam>
using namespace std;
class AA{
int n;
public:
AA(int k):n(k){}
int get() { return n;}
int get()const{return n+1;}
};
int main()
{
AA a(5);
const AA b(6);
cout<<a.get()<<b.get()
return 0:
}
执行后的输出结果是( )。(B)
A. 55
B. 57
C. 75
D. 77
解析:语句AA a(5)调用的是AA(int k):n(k){},a.get()调用intget(){return;},结果会输出5;而常对象constAAb(6),b.get()调用的是intget()const{returnn+1:},会输出结果7。
5.下列重载函数中,正确的是( )。(B)
A. void fun(int a,float b);void fun(int C,float d)
B. void fun(int a,float b);void fun(float a,int b)
C. float fun(int a,float b);int fun(int b,float a)
D. int fun(int a,int b);float fun(int a,int b)
解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。
6.有如下程序:
#include
using namespace std;
class TestClass{
protected: ’
TestClass 0{cout<<’x’}
TestClass(char C){cout<<c;}
};
class TestClassl:public TestClass
{
public:
TestClass 1(char c){cout<<c;}
);
int main(){
TestClassl dl(’y’);
return 0:
}
执行这个程序,屏幕上将显示输出( )。(C)
A. y
B. yx
C. xy
D. yy
解析:程序中的类TestClass为基类,TestClassl为TestClass的派牛类。由main主函数入手,定义T’estClassl类型的对象d1,参数值为’V’。TestClassl类继承TestClass,所以主函数中“TestClassl dl(’y’);”语句首先调用调用基类中的“TestClass(){cout<<’x’;}”输出x,然后调用“TestClassl(char c){cout<<c;}”输出y,即答案为“xy”。
7.有如下程序:
#include
using namespace std;
class Sample{
friend long fun(Sample s);
public:
Sample(long a){x=a;}
private:
long x;
};
long fun(Sample s){
if(s.x<2)return 1;
return s.x*fun(Sample(s.x—1));
}
int main()
{
int sum=0;
for(int i=0;i<6;i++)
{sum+=fun(Sample(i));}
cout<<sum;
return 0;
}
执行这个程序的输出结果是( )。(C)
A. 120
B. 16
C. 154
D. 34
解析:本题考查默认构造函数,当i=0、1时,fun(Sample(i))为1;当i=2时,fun(Sample(i))为2;当i=3时,fun(Sample(i))为6;当i=4时,fun(Sample(i))为24;当i=5时,fun(Sample(i))为120。所以总和为154。
8.有如下程序:
#include
using namespace std;
class TestClass 1
{
public:
TestClass 1(){cout<<“TestClass 1”;}
~TestClass 1(){cout<<“~TestClass 1”;}<
本文档预览:3600字符,共19959字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载