正确答案: B
题目:设某种二叉树有如下特点:结点的子树数目不是2个,则是0个。这样的一棵二叉树中有m(m>0)个子树为0的结点时,该二叉树上的结点总数为______。
解析:解析:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则:n0=n2+1根据题意,n0=m,则n2=n0-1=m-1。所以,结点总数为:n0+n2=m+(m-1)=2m-1本题正确答案为选项B。
举一反三的答案和解析:
答案:
(1)virtualpublicemployee
(2)publicmanager,publicsalesman
(3)employee(num,ch),manager(num,ch),salesman(num,ch)
(4)salary=monthpay+commrate*sales;
(5)employee::display();
解析:
本题考查类的定义、继承及虚基类与虚函数的应用。
首先我们来看一下基类employee的程序代码,在基类中构造了一个构造函数和两个虚函数,其中虚函数display()可以输出编号和工资。
由整个程序的作用可以看出,类salesman与类manager应继承类employee,而类salesmanager则应该继承类salesman与类manager.在每个类中都有函数pay()和display(),且在每个类中都对这两个函数进行了重新定义。这样这两个同名函数出现多个地址映射。要解决这个问题,在C++语言中,采用虚基类。因此,第(1)空的答案是virtualpublicemployee.
第(2)空也是表示类的继承,类salesmanager继承类salesman与类manager,因此,此空答案为publicmanager,publicsalesman.
结合整个程序来看,其他三个类都是类salesmanager的父类,因此,第(3)空处应该填employee(num,ch),manager(num,ch),salesman(num,ch)。
根据题目的要求,再结合主函数与类salesmanager的模块可以推出第(4)空处的功能是计算销售经理的月总工资,而计算方法是固定工资加提成。因此,答案为salary=monthpay+commrate*sales.
对比三个子类的display()函数,不难发现第(5)空应为employee::display()。