考虑函数原型 void hello(int a, int b=7, char pszC=""), 下面的函数调用中属于不合法调用的是?
A. hello(5)
B. hello(5, 8)
C. hello(6, "#")
D. hello(0, 0, "#")

答案:【C】
说明:
C++ 函数参数的扩展

一个有 800 个节点的完全二叉树,问有多少个叶子节点?
A. 100
B. 200
C. 400
D. 无法确定

答案:【C】
说明:

1. 计算完全二叉树高度              h = 9 + 1 = 10
2. 计算第 1-9 层节点数目           n_1_9 = 512 - 1 = 511
3. 计算第 10 层节点(都为叶节点)数目 ln_10 = 800 - 511= 289
4. 计算第 9 层节点数目             n_9 = 256
5. 计算第 9 层叶节点数目           ln_10 = 256 - (288 / 2 + 1) = 256 - 145 = 111
6. 计算总叶节点数目                ln = ln_10 + ln_9 = 289 + 111 = 400

二叉树的深层特性

  • 性质 1

clipboard.png

  • 性质 2

clipboard.png

  • 性质 3

clipboard.png

  • 性质 4

clipboard.png

  • 性质 5

clipboard.png

若 6 元素为 A.B.C.D.E.F 出栈顺序为 B.D.C.F.E.A,则栈的最小容量为?
A. 3
B. 4
C. 5
D. 6

答案:【A】
说明:

clipboard.png

排序算法的稳定是指,关键码相同的记录顺序前后相对位置不发生改变,下面哪种排序顺序算法是不稳定的?
A. 插入排序
B. 冒泡排序
C. 快速排序
D. 归并排序

答案:【C】

说明:
排序算法 时间复杂度 稳定性
选择排序 O(n2) 不稳定
插入排序 O(n2) 稳定
冒泡排序 O(n2) 稳定
希尔排序 O(n(2/3)) 不稳定
归并排序 O(nlogn) 稳定
快速排序 O(nlogn) 不稳定
如下关于进程的描述不正确的是?
A. 进程在退出时会自动关闭自己打开的所有文件
B. 进程在退出时会自动关闭自己打开的网络链接
C. 进程在退出时会自动销毁自己创建的所有线程
D. 进程在退出时会自动销毁自己打开的共享内存

答案:【D】

在一个 cpp 文件里面,定义了一个 static 类型的全局变量,下面一个正确的描述是?
A. 只能在该 cpp 所在的编译模块中使用该变量
B. 该变量的值是不可改变的
C. 该变量不能在类的成员函数中引用
D. 该变量只能是基本类型(如 int, char)不能是 C++ 类型

答案:【A】
说明:
C中的static

下面有关重载函数的说法中正确的是?
A. 重载函数必须有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同

答案:【C】
说明:
函数重载分析-上
函数重载分析-下

某火车站要通过一条栈道(先进后出)来调换进入车站的列车顺序,若进站的列车顺序为A、B、C,则下列哪个出站顺序不可能?
A. ABC
B. ACB
C. CAB
D. CBA

答案:【C】

下面哪种情况下, B 不能隐式转换为 A ?
A. class B:public A{};
B. class A:public B{};
C. class B{operator A();};
D. class A{A(const B&)};

答案:【B】
说明
A. 赋值兼容性
B. 类型转换函数
D. 转换构造函数

分析下面程序的运行结构
#include<iostream.h>
class CBase
{
    public:
    CBase(){ cout<<"constructing CBase class"<<endl; }
    ~CBase(){ cout<<"destructing CBase class"<<endl; }
};
class CSub : public CBase
{
    public:
    CSub(){cout<<"constructing CSub class"<<endl;}
    ~CSub(){cout<<"destructing CSub class"<<endl;}
};
void main()
{
    CSub obj;
}
A.  constructing CSub class
    constructing CBase class
    destructing CSub class
    destructing CBase class
    
B.  constructing CBase class
    constructing CSub class
    destructing CBase class
    destructing CSub class
    
C.  constructing CBase class
    constructing CSub class
    destructing CSub class
    destructing CBase class
    
D.  constructing CSub class
    constructing CBase class
    destructing CBase class
    destructing CSub class

答案:【C】
说明:

对象创建时的构造顺序:先父母,再客人,后自己
析构顺序与构造顺序相反

继承中的构造与析构

两个字符串 char a, char b, 输出 b 在 a 中的位置次序
void output_postion(const char* a, const char* b);

如:a = "abdbcc" b = "abc"
    b 在 a 中的位置次序为
    014
    015
    034
    035
void abstring(string& a, int ai, string& b, int bi, list<int>& l)
{
    if( bi == b.length() )
    {
        for(list<int>::iterator it=l.begin(); it!=l.end(); it++)
        {
            cout << *it;
        }

        cout << endl;
    }
    else
    {
        for(int i=ai; i<a.length(); i++)
        {
            if( a[i] == b[bi] )
            {
                l.push_back(i);

                abstring(a, i+1, b, bi+1, l);

                l.pop_back();
            }
        }
    }
}

void output_postion(const char* a, const char* b)
{
    string as = a;
    string bs = b;
    list<int> l;

    abstring(as, 0, bs, 0, l);
}

TianSong
734 声望138 粉丝

阿里山神木的种子在3000年前已经埋下,今天不过是看到当年注定的结果,为了未来的自己,今天就埋下一颗好种子吧