找到 375 道单选题
EXY-SC-0185
第 191 题

下面代码实现了欧几里得算法。下面有关说法,错误的是( )。

int gcd1(int a, int b) {
    return b == 0 ? a : gcd1(b, a % b);
}
 
int gcd2(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}
A

gcd1() 实现为递归方式。

B

gcd2() 实现为迭代方式。

C

当 a 较大时,gcd1() 实现会多次调用自身,需要较多额外的辅助空间。

D

当 a 较大时,gcd1() 的实现比 gcd2() 执行效率更高。

语言: C++
GESP真题 五级
2025.12
单选题号: 5
EXY-SC-0184
第 192 题

假设我们有两个数 a = 38 和 b = 14,它们对模 m 同余,即 a≡b (mod m)。以下哪个值不可能是 m?

A

3

B

4

C

6

D

9

语言: C++
GESP真题 五级
2025.12
单选题号: 4
EXY-SC-0183
第 193 题

下面关于单链表和双链表的描述中,正确的是( )。

struct DNode {
    int data;
    DNode* prev;
    DNode* next;
};
 
// 在双链表中删除指定节点
void deleteNode(DNode* node) {
    if (node->prev) {
        node->prev->next = node->next;
    }
    if (node->next) {
        node->next->prev = node->prev;
    }
    delete node;
}
 
struct SNode {
    int data;
    SNode* next;
};
 
// 在单链表中删除指定节点
void deleteSNode(SNode* head, SNode* node) {
    SNode* prev = head;
    while (prev->next != node) {
        prev = prev->next;
    }
    prev->next = node->next;
    delete node;
}
A

双链表删除指定节点是O(1),单链表是O(1)

B

双链表删除指定节点是O(n),单链表是O(1)

C

双链表删除指定节点是O(1),单链表是O(n)

D

双链表删除指定节点是O(n),单链表是O(n)

语言: C++
GESP真题 五级
2025.12
单选题号: 3
EXY-SC-0182
第 194 题

区块链技术是比特币的基础。在区块链中,每个区块指向前一个区块,构成链式列表,新区块只能接在链尾,不允许在中间插入或删除。下面代码实现插入区块添加函数,则横线处填写( )。

// 区块(节点)
struct Block {
    int index;           // 区块编号(高度)
    string data;         // 区块里保存的数据
    Block* prev;         // 指向前一个区块
 
    Block(int idx, const string& d, Block* p) : index(idx), data(d), prev(p) {}
};
 
// 区块链
struct Blockchain {
    Block* tail;
 
    // 初始化
    void init() {
        tail = new Block(0, "Genesis Block", nullptr);
    }
 
    // 插入新区块
    void addBlock(const string& data) {
        _______________  // 在此处填入代码
    }
 
    // 释放内存
    void clear() {
        Block* cur = tail;
        while (cur != nullptr) {
            Block* p = cur->prev;
            delete cur;
            cur = p;
        }
        tail = nullptr;
    }
};
A
Block* newBlock = new Block(tail->index + 1, data, tail);
tail = newBlock->prev;
B
Block* newBlock = new Block(tail->index + 1, data, tail);
tail = newBlock;
C
Block* newBlock = new Block(tail->index + 1, data, tail->prev);
tail = newBlock;
D
Block* newBlock = new Block(tail->index + 1, data, tail->prev);
tail = newBlock->prev;
语言: C++
GESP真题 五级
2025.12
单选题号: 2
EXY-SC-0181
第 195 题

对如下定义的循环单链表,横线处填写( )。

// 循环单链表的结点
struct Node {
    int data;      // 数据域
    Node* next;    // 指针域
 
    Node(int d) : data(d), next(nullptr) {}
};
 
// 创建一个只有一个结点的循环单链表
Node* createList(int value) {
    Node* head = new Node(value);
    head->next = head;
    return head;
}
 
// 在循环单链表尾部插入新结点
void insertTail(Node* head, int value) {
    Node* p = head;
    while (p->next != head) {
        p = p->next;
    }
    Node* node = new Node(value);
    node->next = head;
    p->next = node;
}
 
// 遍历并输出循环单链表
void printList(Node* head) {
    if (head == nullptr) return;
 
    Node* p = head;
    __________________  // 在此处填入代码
    cout << endl;
}
A
while (p != nullptr){
    cout << p->data << " ";
    p = p->next;
}
B
while (p->next != nullptr){
    cout << p->data << " ";
    p = p->next;
}
C
do {
    cout << p->data << " ";
    p = p->next;
} while (p != head);
D
for(; p; p=p->next){
    cout << p->data << " ";
}
语言: C++
GESP真题 五级
2025.12
单选题号: 1
当前页显示 191 - 195 ,共 375 道单选题