1、二级 C+笔试 99及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.在深度为 5的满二叉树中,叶子结点的个数为( )。(分数:2.00)A.31B.32C.16D.152.若有以下程序: #includeiostream using namespace std; class A public: A(int i,int j) a=i; b=j; void move(int x,int y) a+=X; b+=y; voidshow() couta“,“bendl; private: int a,b; ; class B:private
2、A public: B(int i,int j):A(i,j) void fun() move(3,5); void f1() A:show(); ; int main() B d(3,4); d.fun(); d.f1(); return 0; 程序执行后的输出结果是( )。(分数:2.00)A.3,4B.6,8C.6,9D.4,33.多继承的构造顺序可分为如下四步: 所有非虚基类的构造函数按照它们被继承的顺序构造 所有虚基类的构造函数按照它们被继承的顺序构造 所有子对象的构造函数按照它们声明的顺序构造 派生类自己的构造函数体 这四个步骤的正确顺序是( )。(分数:2.00)A.B.C.D.
3、:4.如果有以下定义及初始化: int a=3,*p: void operator delete(void *p)free(p) private: int length,width; ; void main() Rect*p; p=new Rect(5,4); p-Print(); delete p; (分数:2.00)填空项 1:_44.表达式 c3=c1operator+(c2)或 c3=operator+(c1,c2)还可以表示为U 【9】 /U。(分数:2.00)填空项 1:_45.以下程序输出的结果是U 【10】 /U。 #includeiostream.h void main()
4、int a=5,b=4,c=3,d; d=(abc); coutd; (分数:2.00)填空项 1:_46.以下程序的执行结果是U 【11】 /U。 #includeiostream.h int f(int b,int n) int i,r=1; for(i=0;in;i+) r=r*bi; return r; void main() int x,a=2,3,4,5,6,7,8,9; x=f(a,3); coutxendl; (分数:2.00)填空项 1:_47.下列程序运行后的输出结果是U 【12】 /U。 #includeiostream.h void main() int s=0,k;
5、for(k=7;k=0;k-) switch(k) case 1: case 4: case 7:s+;break; case 2: case 3: case 6:break; case 0: case5:S+;2;break; cout“S=“Sendl; (分数:2.00)填空项 1:_48.以下程序的输出结果是U 【13】 /U。 #includeiostream.h int add(int x,int y) retum X+y; dOuble add(dOUble x,double y) return x+y; void main() int a=4,b=6; double c=26,
6、d=7.4; coutadd(a,b)“,”add(C,d)endl; (分数:2.00)填空项 1:_49.有如下程序: #includeiostream using namespace std; class Con char ID; public: Con():ID(A)cout1;) Con(char ID):ID(ID)cout2; Con(Con void operator delete(void *p)free(p) private: int length,width; ; void main() Rect*p; p=new Rect(5,4); p-Print(); delete
7、 p; (分数:2.00)填空项 1:_ (正确答案:Area:20)解析:44.表达式 c3=c1operator+(c2)或 c3=operator+(c1,c2)还可以表示为U 【9】 /U。(分数:2.00)填空项 1:_ (正确答案:c3=c1+c2)解析:45.以下程序输出的结果是U 【10】 /U。 #includeiostream.h void main() int a=5,b=4,c=3,d; d=(abc); coutd; (分数:2.00)填空项 1:_ (正确答案:0)解析:46.以下程序的执行结果是U 【11】 /U。 #includeiostream.h int f
8、(int b,int n) int i,r=1; for(i=0;in;i+) r=r*bi; return r; void main() int x,a=2,3,4,5,6,7,8,9; x=f(a,3); coutxendl; (分数:2.00)填空项 1:_ (正确答案:24)解析:47.下列程序运行后的输出结果是U 【12】 /U。 #includeiostream.h void main() int s=0,k; for(k=7;k=0;k-) switch(k) case 1: case 4: case 7:s+;break; case 2: case 3: case 6:brea
9、k; case 0: case5:S+;2;break; cout“S=“Sendl; (分数:2.00)填空项 1:_ (正确答案:s=7)解析:48.以下程序的输出结果是U 【13】 /U。 #includeiostream.h int add(int x,int y) retum X+y; dOuble add(dOUble x,double y) return x+y; void main() int a=4,b=6; double c=26,d=7.4; coutadd(a,b)“,”add(C,d)endl; (分数:2.00)填空项 1:_ (正确答案:10,10)解析:49.有
10、如下程序: #includeiostream using namespace std; class Con char ID; public: Con():ID(A)cout1;) Con(char ID):ID(ID)cout2; Con(Con& c):ID(c.getlD()cout3;) char getID()constreturn ID;) ; void show(Con c)coutc.getID(); int main() Con c1; show(c1); Con c2(B); show(c2); return 0; 执行上面程序的输出是U 【14】 /U。(分数:2.00)填空项 1:_ (正确答案:13A23B)解析:50.下列程序将 x、y 和 z按从小到大的顺序排列,请将下面的函数模板补充完整。 templateclass T void order(U 【15】 /U) T a; if(xy) a=X;x=y;y=a; if(yz) a=y;y=z;z=a; if(xy) a=X;x=y;y=a; (分数:2.00)填空项 1:_ (正确答案:T &x,T &y,T &z)解析: