国家二级(C++)机试模拟试卷306
选择题
1.给出下面程序输出结果( )。
#include<iostream.h>void main()
{int*p1;
int**p2=&p1;
intb=20;
p1=&b;
cout<<**p2<<end1;
}(B)
A. 10
B. 20
C. 40
D. 30
解析:p1指向b,而p指向p1的地址。*p2表示p1的地址,p1的地址就是&b,即*p2是&b,所以**p2就是b变量的值。
2.下面程序的输出结果为( )。
#include
class TestClass
{
public:
TestClass(){Val++;}
static int val;
};
int TestClass::val=0:
void main()
{
TestClass cs1:
cout<<cs 1.val<<\\(C)
A. 03
B. 13
C. 14
D. 24
解析:由主函数main入手,定义TestClass类的对象csl,执行csl.val,其中val为静态变量,根据“intTestClass::val=0;”初始化,TestClass中的TestClass(){val++;}构造函数执行后,val值为l。主函数中接着定义对象cs2,cs3,cs4。执行“cout<<cs2.val<<endl;”中的val值为4。
3.以下程序的执行结果为( )。
#include
class Sample
{
int n:
public:
Sample(int i){n=i;}
operator++(){n++;} ∥前缀重载运算符
operator++(int){n+=2;} ∥后缀重载运算符
void disp()
{
cout<<\\(A)
A. n=4 n=3
B. n=1 n=2
C. n=3 n=4
D. n=5 n=6
解析:此题考查的是“++”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数:int。本题中, A(2)首先给n赋值2,语句A++,调用的是后缀运算符重载语句,使得n加2变为4。B(2)首先给n赋值2,然后语句++B,调用前缀运算符重载函数,使得n加1。因此最终的输出结果是n=4 n=3。
4.有如下程序:
#include<iostream>
using namespace std;
class MyClass{
public:
MyClass(){cout<<’A’;}
MyClass(char c){cout<<c;}
~MyClass(){cout<<’B’;}
};
int main(){
MyClass p1,*p2;
p2=new MyClass(’X’);
delete p2;
return0;
}
执行这个程序的输出结果是( )。(D)
A. ABX
B. ABXB
C. AXB
D. AXBB
解析:构造函数和析构函数的调用顺序为先构造的后析构,后构造的先析构。所以本题答案为D。
5.下列有关内联函数的叙述中,正确的是( )。(C)
A. 内联函数在调用时发生控制转移
B. 内联函数必须通过关键字inline来定义
C. 内联函数是通过编译器来实现的
D. 内联函数函数体的最后一条语句必须是return语句
解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项A)错误:即使没有使用inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B)错误;内联函数只是比普通函数有更高的执行效率。
6.对软件设计的最小单位(模块或程序单元)进行的测试通常称为( )。(B)
A. 单位测试
B. 单元测试
C. 程序测试
D. 软件测试
解析:对模块或函数进行测试称为单元测试,对整个系统进行测试就是系统测试。
7.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为c。
8.下面关于构造函数和析构函数的描述中,错误的是( )。(D)
A. 析构函数可以声明为虚函数
B. 对虚析构函数的调用可以采用动态联编
C. 一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响
D. 构造函数可以声明为虚函数
解析:析构函数可以声明为虚函数,但是构造函数不能声明为虚函数;类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响。
9.有如下程序:
#include<iostream>
using namespace std;
class A{
public:
A(int i){x=i;}
void dispa(){cout<<x<<’,’;}
private:
int x;
};
class B:public A{
public:
B(int i):A(i+10){x=i;}
void dispb(){dispa();cout<<x<<end1;}
private:
int x;
};
int main(){
B b(2);
b.dispb();
return 0;
}
执行这个程序的输出结果是
本文档预览:3600字符,共16782字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载