一、选择题
1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
A. 123456ABCDE B. EDCBA54321
C. ABCDEl2345 D. 54321EDCBA
2、下列叙述中正确的是( )。
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定
3、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
A. O(n)   ……此处隐藏25683个字…… 运算符函数,赋予已有的运算符多重含义。运算符函数名由运算符前加关键字operator构成。
49、8100
[解析] 此题考查运算符重载。首先从主函数入手,定义了类 Wages的对象w1和w2,然后调用重载运算符+,计算对象w1和w2中CBase、CBonus以及CTax的和,分别是7000、1500、400,然后调用getPay()成员函数,计算base+bonus-tax,7000+1500-400=8100。
50、哈克汪汪叫
吉米喵喵叫
[解析] 此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。即若基类和派生类中存在一模一样的成员函数,通过该基类指针调用这样的成员函数时,若这个成员函数被定义成虚函数,那么就调用派生类中的;否则就调用基类中的。本题中,在f()函数中,此题中,void call()在基类中被声明为虚函数,在主函数中,语句Pet*pet1=new Dog("哈克"),*pet2=new Cat("吉米");定义了基类的指针per1和pet2,并让它们分别指向派生类对象Dog和Cat。所以通过该指针调用call()时运行的是派生类的版本,分别输出哈克和吉米;而通过该指针调用 getName()运行的是基类的版本,分别输出汪汪叫和喵喵叫。