2026年3月电子学会青少年软件编程(C/C++五级)等级考试试卷
剩余时间 --:--:--
单选题 共 10 题
1.

查找键 "key" 是否存在,正确的代码是?( )

2.

以下代码的输出是?( )

int f(int n) {
    if(n == 0) return 2;
    return n*f(n-1);
}
int main() {
    cout << f(3);
}
3.

set 的组织特点是?( )

4.

以下代码的输出是?( )

map<string, int> m;
m["apple"]= 5;
m["banana"] = 3;
cout << m["apple"];
5.

以下代码的输出是?( )

set<int> s;
s.insert(5);
s.insert(2);
s.insert(8);
for (int x : s) cout << x <<" ";
6.

在一个有序序列里,二分查找一个给定的键值,算法的时间复杂度是?( )

7.

若 pre[i] = a[1] + … + a[i],则能表示 a[3] 到 a[9] 的和公式是?( )

8.

以下代码的时间复杂度为?( )

for(int step=1; step<n; step=step*2){
std::cout <<step<<"\n";
}
9.

计算斐波那契序列应使用哪种算法?( )

10.

以下代码的输出是?( )

int f[10];
f[0] = 0; 
f[1] = 1;
for (int i = 2; i<10; i++){
    f[i] = f[i-1] + f[i-2];
}
cout << f[8];
判断题 共 10 题
1.

递归程序书写不当可能导致栈溢出。( )

2.

map 的查找单个键的时间复杂度是 O(log n)。( )

3.

前缀和可以用于解决任意区间求最大值的问题。( )

4.

set 的元素按大小降序排列。( )

5.

map 中的一个键不能对应两组数据。( )

6.

二分查找时,需要保证搜索序列是有序的,否则无法保证正确性。( )

7.

模运算中,(a-b) % m 必然等于(a % m) - (b % m)。( )

8.

如果一个数列满足递推关系  an = 2*a(n-1) - 3 ,那么该数列是等差数列。( )

9.

set 的 insert 操作不会插入重复元素。( )

10.

二分查找可以用于查找旋转数组中的元素。( )

编程题 共 2 题
1.

字符串的不同字串

题目描述

给定一个由小写英文字母组成的字符串 s。请问 s的不同非空子串有多少种?

子串是指字符串中连续的一段字符。例如,xxx 是 yxxxy 的子串,但不是 xxyxx 的子串。

输入

输入一行,包含一个字符串 s。

输出

输出一个整数,表示 s的不同非空子串的数量。

数据范围

s仅由小写英文字母组成。

1≤∣s∣≤100,其中 ∣s∣表示字符串的长度。

输入样例1

aababc

输出样例1

17

输入样例2

abracadabra

输出样例2

54
2.

坐标选点

题目描述

修建了一条长度为 m 公里的铁路,起点和终点已经建有火车站。铁路沿线有 n 座城市(城市不位于起点或终点),第 i 座城市到铁路起点的距离为 ai 公里。

现在计划在这 n 座城市中选择 c 座修建火车站,使得所有火车站(包括起点和终点的火车站)之间的最小相邻距离尽可能大。请你计算这个最小相邻距离的最大可能值。

输入

第一行包含三个正整数n、c、m,分别表示城市数量、计划修建的火车站数量以及铁路总长度。

第二行包含n个正整数a1,a2,...,an,表示每座城市到铁路起点的距离。

输出

输出一个整数,表示最小相邻距离的最大可能值。

数据范围

1≤c≤n≤10^6,1≤ai<m≤10^9,输入中的所有数值均为整数。

输入样例1

5 3 10
1 2 8 4 9

输出样例1

2
C++ 编辑器
输入
输出