一、选择题
下列各题A. 、B. 、C. 、D. 四个选项中,只有一个选项是正确的。
1、下面叙述正确的是
A. 算法的执行效率与数据的存储结构无关
B. 算法的空间复杂度是指算法程序中指令(或语句)的条数
C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
D. 以上三种描述都不对
2、以下数据结构中不属于线性数据结构的是
A. 队列 B. 线性表
C. 二叉树 D. 栈
3、在一棵二叉树上第5层的结点数最多是
A. 8 B. 16
C. 32 D. 15
……此处隐藏29845个字…… 。
47、n*fact (n-1)
[解析] 本题考核递归函数。一般递归函数由递归出口和递归体两部分组成。递归出口给出了递归终止的条件;递归体给出了递归的方式。题中程序给出了递归出口,但是没有给出递归体,由阶乘的定义可知其递归体应该为n*fact (n-1)。
48、3,3.14
[解析] 本题考核模板函数的使用。C++编译系统将根据实参表中的实参的类型来确定函数的形参列表中的类型。函数fun的功能是返回两者中较小的值,函数调用fun(3,6)返回的值为3,函数调用fun(3.14F,6.28F)返回的值为3.14。
49、(*p).name
[解析] 本题考核对象指针的定义与使用。一个基类型为类类型的指针称为对象指针。对于指向对象的指针,下面两种表示方式是等价的:
对象指针名->成员名;
(*对象指针名).成员名;
50、25
[解析] 本题考核虚函数的定义和调用。在C++中,一个基类指针(或引用)可以用来指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。题中基类成员函数set()被定义成虚函数,而且其派生类deriveA和deriveB都有函数set()的重定义版本,所以通过指针pbase的两次调用分别调用的是派生类deriveA和deriveB中定义的版本,即输出25。