下半年的计算机等级考试已经快到了,对于考生来说,C++绝对是一个难关。出国留学网计算机等级考试栏目为大家分享“计算机二级C++上机练习题及答案”,一起来做做吧。
计算机二级C++上机练习题及答案
1下列有关内联函数的叙述中,正确的是( )。
A.内联函数在调用时发生控制转移
B.内联函数必须通过关键字inline来定义
C.内联函数是通过编译器来实现的
D.内联函数函数体的最后一条语句必须是return语句
参考答案:C
参考解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。
2语句int*P=&k;定义了指针P,与这个语句等效的语句序列是( )。
A.int* p;P=&k;B.int * P;P=k;C.int * p;* P=&k;D.int * 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.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~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 aA.const{cout<
};
其中四个函数的定义中正确的是( )。
A.①B.②C.③D.④
参考答案:B
参考解析:本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。
5若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
A.Data+(DatA.;B.Data operator+(DatA.;C.Data+operator(DatA.;D.operator+(Data,DatA.;
参考答案:B
参考解析:根据重载加法运算符的格式,只有B选项正确。
6有如下数组声明:int num[10];,下标值引用错误的是( )。
A.num[10]B.num[5]C.num[3]D.hum[o]
参考答案:A
参考解析:数组定义中的数字指的是数组的大小,而下标是从0开始的,所以本题中数组的最后一个元素是num[9]。
7将前缀运算符“--”重载为非成员函数,下列原型中能正确用于类中说明的是( )。
A.DeCr&operator--(int);B.DeCr operator--(DeCr&,int);C.friend DeCr&operator--(DeCr&);D.friend DeCr operator--(DeCr&,int);
参考答案:C
参考解析:把“--”运算符重载为非成员(友元)函数格式:friend<返回类型>operator--()是前缀的格式;friend<返回类型>operator--(int)是后缀的格式。当然也可以有参数如题中C选项所示。
8如果派生类以proteCted方式继承基类,则原基类的proteCted成员和publiC成员在派生类中的访问属性分别是( )。
A.publiC和publiCB.publiC和proteCtedC.proteCted和publiCD.proteCted和proteCted
参考答案:D
参考解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为D。
9在函数中,可以用aut0、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。
A.autoB.externC.registerD.static
参考答案: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。