GESP C++ 6级 2023.12
关于C++类和对象的说法,错误的是( )。
在C++中,一切皆对象,即便是字面量如整数5等也是对象
在C++中,可以自定义新的类,并实例化为新的对象
在C++中,内置函数和自定义函数,都是类或者对象
在C++中,可以在自定义函数中嵌套定义新的函数
有关下面C++代码的说法,错误的是( )。
```cpp
class Rectangle
{
private:
class Point
{
public:
double x;
double y;
};
Point a, b, c, d;
double length;
double width;
public:
C++中类内部可以嵌套定义类
在类中定义的类被称为内部类,定义类的类被称为外部类
内部类可以随便访问,不需要通过外部类来访问
代码中 Point 被称为内部类,可以通过外部类 Rectangle 来访问, Rectangle::Point
有关下面C++代码的说法,正确的是()。
#include
using namespace std;
class NewClass
{
public:
static int objCounter;
};
int NewClass::objCounter = 2;
int main()
{
NewClass classA;
NewClass classB;
cout << NewClass::objCounter << endl;
cout << classB.objCounter << endl;
}
第14行代码错误,第15行正确
第15行代码错误,第14行代码正确
第14、15两行代码都正确
第6行代码可修改为 objCounter += 1
有关下面C++代码的说法,错误的是( )。
struct BiNode {
char data;
BiNode *lchild, *rchild;
};
class BiTree {
private:
BiNode *Creat();
void Release(BiNode *bt);
BiNode *root;
public:
BiTree() {
root = Creat();
}
~BiTree() {
Release(root);
上列C++代码适用于构造各种二叉树
代码 struct BiNode 用于构造二叉树的节点
代码 BiTree(){root=Creat();} 用于构造二叉树
析构函数不可以省略
基于第4题的定义,有关下面C++代码的说法正确的是( )。
void Order(BiNode* bt)
{
if (bt == nullptr)
return;
else
{
cout data;
Order(bt->lchild);
Order(bt->rchild);
}
}
代码中 Order( ) 函数是中序遍历二叉树的方法
代码中 Order( ) 先访问根节点,然后对左子树进行前序遍历,再对右子树前序遍历
代码中 Order( ) 先访问中序遍历左子树,然后访问根节点,最后则是中序遍历右子树
代码中 Order( ) 先后序遍历左子树,然后后序遍历右子树,最后访问根节点
有关下面C++代码的说法正确的是( )。
typedef struct LinkNode {
int data;
LinkNode *next;
LinkNode *prev;
} LinkList,LinkNode;
bool ListInit(LinkList *&L) {
L = new LinkNode;
if (!L) return false;
L->next = NULL;
L->prev = NULL;
L->data = -1;
return true;
}
上述代码构成单向链表
上述代码构成双向链表
上述代码构成循环链表
上述代码构成指针链表
对 hello world 使用霍夫曼编码(Huffman Coding),最少bit(比特)为( )。
4
32
64
88
下面的 fiboA() 和 fiboB() 两个函数分别实现斐波那契数列,该数列第 、第 项值为 ,其余各项分别为前两项之和。下面有关说法错误的是( )。
int fiboA(int n){
if (n == 0)
return 1;
if (n == 1)
return 1;
else{
return fiboA(n - 1) + fiboA(n - 2);
}
}
int fiboB(int n){
if ((n == 0) || (n == 1)){
fiboB[n] = n;
return n;
} else{
if (fiboB[n] == 0){
fiboB[n] = fiboB(n - 1) + fiboB(n - 2);
}
return fiboB[n];
}
}
fiboA() 采用递归方式实现斐波那契数列
fiboB() 采用动态规划算法实现斐波那契数列
当N值较大时, fiboA() 存在大量重复计算
由于 fiboA() 代码较短,其执行效率较高
有关下面C++代码不正确的说法是( )。
int Depth(BiTree T)
{
if (T == NULL)
{
return 0;
}
else
{
int m = Depth(T->lchild);
int n = Depth(T->rchild);
if (m > n)
{
return m + 1;
}
else
{
return n + 1;
}
}
}
该代码可用于求解二叉树的深度
代码中函数 Depth( ) 的参数 T 表示根节点,非根节点不可以作为参数
代码中函数 Depth( ) 采用了递归方法
代码中函数 Depth( ) 可用于求解各种形式的二叉树深度,要求该二叉树节点至少有 left 和 right 属性
下面有关树的存储,错误的是( )
完全二叉树可以用 list 存储
一般二叉树都可以用 list 存储,空子树位置可以用 None 表示
满二叉树可以用 list 存储
树数据结构,都可以用 list 存储
