万卷网> 电子学会考级 >C/C++等级考试 > 2026年3月电子学会青少年软件编程(C/C++三级)等级考试试卷

2026年3月电子学会青少年软件编程(C/C++三级)等级考试试卷
操作/编程 三级 2026 2026-04-28 13:10:02 131

一、单选题

1.

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

A.

top()

B.

front()

C.

peek()

D.

first()

2.

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

A.

arr[-1]

B.

arr[100]

C.

arr[arr[1]]

D.

arr[40]

3.

以下代码的输出是?( )

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

1 2 3

B.

3 2 1

C.

1 1 1

D.

无输出

4.

以下代码的功能是?( )

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

找出乘积为 24 的整数对

B.

计算 24 的因数

C.

打印乘法表

D.

A 和 B 均正确

5.

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

A.
bool check(int nums[], int n) {
    bool mark[100] = {false};
    for (int i=0; i<n; i++) {
        mark[nums[i]]=true;
    }
    return true;
}
B.
bool check(int nums[], int n) {
    bool mark[101] = {false};
    for (int i=0; i<n; i++) {
        if (mark[nums[i]]) return true;
        mark[nums[i]] = true;
    }
    return false;
}
C.
bool check(int nums[], int n) {
    bool mark[100] = {false};
    for (int i=0; i<n; i++) {
        if (mark[nums[i]]) return true;
        mark[nums[i]] = true;
    }
    return false;
}
D.
bool check(int nums[], int n) {
    bool mark[101] = {true};
    for (int i=0; i<n; i++) {
        if (mark[nums[i]]) return true;
        mark[nums[i]] = false;
    }
    return false;
}
6.

以下代码的输出是?( )

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

Hello

B.

World

C.

HelloWorld

D.

编译错误

7.

以下代码的输出是?( )

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

2

B.

4

C.

6

D.

8

8.

栈的特点是?( )

A.

先进先出

B.

先进后出

C.

随机存取

D.

有序

9.

以下代码的输出是?( )

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

5

B.

10

C.

15

D.

25

10.

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

A.

用索引2开始取3个字符

B.

从索引3开始取2个字符

C.

从索引2开始取到索引3

D.

从第2个字符开始到第3个字符

二、判断题

1.

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

A.正确 B.错误
2.

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

A.正确 B.错误
3.

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

A.正确 B.错误
4.

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

A.正确 B.错误
5.

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

A.正确 B.错误
6.

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

A.正确 B.错误
7.

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

A.正确 B.错误
8.

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

A.正确 B.错误
9.

stack 不支持随机访问。( )

A.正确 B.错误
10.

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

A.正确 B.错误

三、编程题

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
公众号
客服 反馈
顶部