题号123456789101112131415
答案CBBCCDADDACACDC
C++ 五级
2024 年 06 月
1单选题(每题 2 分,共 30 分)
第 1 题 下面C++代码用于求斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。函数fibo()属于( )。
A. 枚举算法
B. 贪心算法
C. 迭代算法
D. 递归算法
第 2 题 下面C++代码用于将输入金额换成最少币种组合方案,其实现算法是( )。
int fibo(int n) {
if (n <= 0)
return 0;
if (n == 1 || n == 2)
return 1;
int a = 1,b = 1, next;
for (int i = 3; i <= n; i++) {
next = a + b;
a = b;
b = next;
}
return next;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
#define N_COINS 7
int coins[N_COINS] = {100, 50, 20, 10, 5, 2, 1}; //货币面值,单位相同
int coins_used[N_COINS];
void find_coins(int money) {
for (int i = 0; i < N_COINS; i++) {
coins_used[i] = money / coins[i];
money = money % coins[i];
}
return;
1
2
3
4
5
6
7
8
9
10
11
12
13
A. 枚举算法
B. 贪心算法
C. 迭代算法
D. 递归算法
第 3 题 小杨采用如下双链表结构保存他喜欢的歌曲列表:
小杨想在头指针为head的双链表中查找他喜欢的某首歌曲,采用如下查询函数,该操作的时间复杂度为( )。
A.
B.
C.
D.
第 4 题 小杨想在如上题所述的双向链表中加入一首新歌曲。为了能快速找到该歌曲,他将其作为链表的第一首歌
曲,则下面横线上应填入的代码为( )。
}
int main() {
int money;
cin >> money; //输入要换算的金额
find_coins(money);
for (int i = 0; i < N_COINS; i++)
cout << coins_used[i] << endl;
return 0;
}
14
15
16
17
18
19
20
21
22
23
24
struct dl_node {
string song;
dl_node* next;
dl_node* prev;
};
1
2
3
4
5
dl_node* search(dl_node* head, string my_song) {
dl_node* temp = head;
while (temp != nullptr) {
if (temp->song == my_song)
return temp;
temp = temp->next;
}
return nullptr;
}
1
2
3
4
5
6
7
8
9
A. head->next->prev = p;
B. head->next = p;
C. head->prev = p;
D. 触发异常,不能对空指针进行操作。
第 5 题 下面是根据欧几里得算法编写的函数,它计算
GESP 6月认证 C++ 五级真题,gesp真题,c++真题,少儿编程题库,2024年6月GESP认证C++编程五级真题试卷及答案