荟萃馆

位置:首页 > 计算机 > 计算机二级

2016年9月计算机二级《C语言》考前练习题

1.下列有关内联函数的叙述中,正确的是( )。

2016年9月计算机二级《C语言》考前练习题

A.内联函数在调用时发生控制转移

B.内联函数必须通过关键字inline来定义

C.内联函数是通过编译器来实现的

D.内联函数函数体的最后一条语句必须是return语句

参考答案:C

参考解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。

2.语句int*P=&k;定义了指针P,与这个语句等效的语句序列是( )。

* p;P=&k; * P;P=k; * p;* P=&k; * p;* P=k;

参考答案:A

参考解析:本题考查指针和地址,题目中定义了一个指向变量k的一个指针p,那么与题目中等效的表达式A选项,即先定义一个指向整型的指针,然后指向k的地址。

3.有如下程序:

#include

using namespace std;

class A

{

public:

A(){cout<<”A”;}

-A(){cout<<”-A”;}

};

class B:public A

{

A*P;

public:

B(){cout<<”B”;P=new A();}

-B(){cout<<”~B”;delete p;}

};

int main()

{

B obj;

return 0;

}

执行这个程序的输出结果是( )。

~A~B~~B~A~~B~A~~A~B~A

参考答案:B

参考解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为B。

4.有如下类定义:

class AA

{

im a:

public:

int getRef()const{return&a;}//①

int getValue()const{return a;}//②

void set(int n)const{a=n;}//③

friend void show(AA t{cout<

};

其中四个函数的定义中正确的是(  )。

A.①B.②C.③D.④

参考答案:B

参考解析:本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。

5.若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。

+(DatA.; operator+(DatA.;+operator(DatA.;ator+(Data,DatA.;

参考答案:B

参考解析:根据重载加法运算符的格式,只有B选项正确。

6.有如下数组声明:int num[10];,下标值引用错误的是( )。

[10][5][3][o]

参考答案:A

参考解析:数组定义中的数字指的是数组的大小,而下标是从0开始的,所以本题中数组的最后一个元素是num[9]。

7.将前缀运算符“--”重载为非成员函数,下列原型中能正确用于类中说明的是(  )。

&operator--(int); operator--(DeCr&,int);nd DeCr&operator--(DeCr&);nd DeCr operator--(DeCr&,int);

参考答案:C

参考解析:把“--”运算符重载为非成员(友元)函数格式:friend<返回类型>operator--()是前缀的格式;friend<返回类型>operator--(int)是后缀的格式。当然也可以有参数如题中C选项所示。

8.如果派生类以proteCted方式继承基类,则原基类的proteCted成员和publiC成员在派生类中的访问属性分别是( )。

iC和iC和eCted和eCted和proteCted

参考答案:D

参考解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为D。

9.在函数中,可以用aut0、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是(  )。

ic

参考答案:A

参考解析:变量的存储方法分为静态存储和动态存储两大类,包含4种:自动的`(auto)、静态的(static)、寄存器的(register)、外部的(extem)。变量如果没有说明存储类型,那么默认就是aut0。

10.下列程序的输出结果是( )。

#include

int rain(iltl a,int B)

{

if(a

else retum b;

retum 0;

}

void main()

{

eout<

}

A.0B.1C.2D.3

参考答案:B

参考解析:本题考查的是函数的调用,第一次调用min(2,3),因为2<3,所以返回值为2,第二次调用min(1,2),因为l<2,所以返回1。