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

获取队首元素但不删除的函数是?( )

2.

对于定义为 int arr[100]; 的数组,下列访问方式中不存在数组越界风险的是?( )

3.

以下代码的输出是?( )

stack<int> st;
for (int i=1; i<=3; i++) st.push(i);
while (!st.empty()) {
    cout << st.top() << " ";
    st.pop();
}
4.

以下代码的功能是?( )

for (int a = 1; a <= 9; a++) {
    for (int b = 1; b <= 9; b++) {
        if (a*b == 24) {
            cout << a << " " << b << endl;
        }
    }
}
5.

已知一个数组 nums 中的元素均为 1~100 之间的整数,若判断该数组是否存在重复元素,以下C++代码片段中正确的是?( )

6.

以下代码的输出是?( )

queue<string> que;
que.push("Hello");
que.push("World");
cout << que.back();
7.

以下代码的输出是?( )

vector<int> a = {2, 4, 6, 8};
a.push_back(10);
cout << a.front();
8.

栈的特点是?( )

9.

以下代码的输出是?( )

vector<int> v = {5, 15, 25};
cout << v[1];
10.

s.substr(2, 3) 表示?( )

判断题 共 10 题
1.

stack 不需要指定长度上限。( )

2.

substr() 函数的参数可以只有一个参数。( )

3.

queue 可以通过下标访问中间元素。( )

4.

vector 的 clear() 会释放所有内存。( )

5.

vector 是动态数组,可以自动扩展容量。( )

6.

统计各项元素出现数量时,必须把计数数组清零。( )

7.

判断数组是否有重复元素出现,最快的算法是双重循环。( )

8.

string 的 find()函数在找不到子串时返回 -1。( )

9.

stack 不支持随机访问。( )

10.

queue 可以在队头进行插入。( )

编程题 共 2 题
1.

颁奖典礼

题目描述

n 个学生参加颁奖典礼,学号为 1 到 n。学生根据比赛排名上台领奖。已知学号为 i 的学生是第 ai 个上去领奖的。请输出学生上台领奖的学号顺序。

输入

第一行,单个整数 n。

第二行,n 个整数a1,a2,...,an。

输出

n 个整数,表示学生上台的顺序。

数据范围

对于100%的数据,1≤n≤100,000,1≤ai≤n。

输入样例1

3
3 1 2

输出样例1

2 3 1
2.

排队名单

题目描述

火车站的售票大厅中有 n 个售票窗口(窗口编号为1,...,n),春运大潮来了,今天窗口还没有开放人们就已经陆陆续续涌进来。

现在按顺序告诉你涌进来的 m 个人的目标窗口和排队编号(为 1,...,m),请你输出售票前各窗口的排队情况。

输入

第一行两个正整数 n、m。

之后 m 个整数 ai,表示第 i 个进来的人到 ai 窗口排队。

输出

n 行,每行若干整数,分别第 i 个窗口前,从前到后排队人的编号,如果该窗口没人排,请输出 nobody。

数据范围:1≤n≤10^4,1≤m≤10^7,1≤ai≤n。

输入样例1

3 7
2 3 1 3 1 1 1

输出样例1

3 5 6 7
1
2 4

输入样例2

7 4
1 3 3 6

输出样例2

1
nobody
2 3
nobody
nobody
4
nobody
C++ 编辑器
输入
输出