万卷网> 信息素养大赛 >C++编程挑战赛 > 2026年全国青少年信息素养大赛星火征途C++编程挑战赛

2026年全国青少年信息素养大赛星火征途C++编程挑战赛
复赛 真题 小高 2026 2026-07-02 09:21:43 397

一、单选题

1.

在“飞夺泸定桥”战斗中,22 名突击队员分成若干小组。执行代码:

cout << 22 / 4 + 22 % 4;

输出的结果是( )

A.

5

B.

2

C.

7

D.

8

2.

大生产运动中,开荒面积 land 必须大于 10 亩且小于 50 亩才是“标准示范田”。以下能正确表示该条件的 C++ 表达式是( )

A.

10 < land < 50

B.

land > 10 && land < 50

C.

land > 10 || land < 50

D.

land > 10, land < 50

3.

炊事班要给战士们分发干粮,只要“粮袋里还有粮食(变量 food > 0)”,就一直分发。这种场景最适合使用( )

A.

continue 语句

B.

while 循环

C.

if 单分支

D.

switch 语句

4.

红军过草地时,指南针是唯一的方向保障。如果变量 angle 表示方位角,执行:

if (angle = 0) cout << "North";
else cout << "Unknown";

输出结果是( )

A.

North

B.

Unknown

C.

0

D.

报错,无法运行

5.

红军通信员正在编写一套敌情分析程序,他需要定义一个变量来专门记录“敌军所在的区域代号”,使用单个大写字母,如 'A'、'B'、'C' 表示。以下定义最合适的是( )

A.

int position;

B.

double position;

C.

char position;

D.

long long position;

二、多选题

1.

为了练习投弹技术,小战士每天进行 5 轮投掷。以下 for 循环能准确执行 5 次的有( )

A.

for (int i = 1; i <= 5; i++)

B.

for (int i = 0; i < 5; i++)

C.

for (int i = 5; i >= 1; i--)

D.

for (int i = 0; i <= 5; i++)

2.

阅读下面程序片段:

int total = 0;
int valid_traps = 0;
int traps[10] = {2, 3, -1, 5, 0, -99};

for (int i = 0; i < 10; i++) {
    if (traps[i] == -99) {
        break;
    }
    if (traps[i] == -1) {
        traps[i + 1] = 0;
        continue;
    }
    if (traps[i] > 0) {
        total += traps[i];
        valid_traps++;
    }
}

下列说法正确的有( )

A.

程序最终计算出的捕获敌人的总数 total 为 5。

B.

程序运行结束后,成功捕获到敌人的陷阱个数 valid_traps 为 3。

C.

代码执行过程中,数组元素 traps[3] 的值被修改为了 0。

D.

遇到 break 跳出循环时,循环变量 i 的值为 5。

3.

在敌后根据地,若情报等级 score 达到 90 分以上(含),或者带有“特急”标志(char flag = 'S'),则定义为“绝密情报”。以下判断逻辑正确的有( )

A.

score >= 90 || flag == 'S'

B.

!(score < 90) || flag == 'S'

C.

score > 89 && flag == 'S'

D.

score > 90 || flag == 'S'

4.

红军某班有 5 名战士,身高记录在:

int height[5] = {165, 170, 172, 168, 175};

下列说法错误的有( )

A.

height[0] 的值是 165。

B.

height[5] 是最后一名战士的身高。

C.

执行 height[1] += 2; 后,height[1] 变为 172。

D.

数组的下标范围是从 1 到 5。

5.

长征途中,班长需要把 n 个馒头平均分给 m 个战士(m > 1, n >= m)。若要判断馒头是否能正好分完(没有余数),下列逻辑正确的有( )

A.

n % m == 0

B.

n / m * m == n

C.

n % m != 1

D.

!(n % m)

三、编程题

1.

密信解析

题目描述

红军的一份密信由一串小写字母组成,解析规则如下:

1. 忽略所有元音字母 a, e, i, o, u。

2. 在剩下的每个辅音字母前加上一个点号 .。

3. 将剩下的所有辅音字母转为大写。

请输出解析后的密信。

输入描述

一个长度不超过 100 的字符串。

输出描述

输出解析后的字符串,保证输出不为空。

样例输入

secret

样例输出

.S.C.R.T


2.

招募统计

题目描述

某团进行招募,如果报名的青年身高 h 大于等于 170 厘米,输出 Qualified;否则输出Keep trying。

输入描述

第一行一个整数 n,表示报名人数。

第二行 n 个整数,表示每个人的身高,以空格间隔。

输出描述

共 n 行,每行输出一个字符串,表示对应青年的考核结果。

样例输入

3
169 170 180

样例输出

Keep trying
Qualified
Qualified
3.

突击期的最大里程

题目描述

长征途中,为了在保存红军体力的同时加快战略转移,指挥部决定设立一个为期 W 天的“战略突击期”。

由于翻雪山、过草地地形复杂,完全要求每天匀速行军是不现实的。指挥部制定了严格的评估标准:在这连续的 W 天内,任何相邻两天的行军里程差的绝对值都不能超过 D 公里。如果存在相邻两天的差值严格大于 D,则会发生“剧烈颠簸”,该 W 天的突击期将被视为不合格。

请在给定的 N 天行军记录中,找出所有合格的“战略突击期”,并计算在这些合格的突击期中,这 W 天的行军总里程最大是多少。如果没有找到任何一个合格的突击期,则输出 -1。

输入描述

第一行包含三个正整数 N, W, D,分别表示总记录天数、突击期的天数要求、以及相邻两天的最大允许里程差。

第二行包含 N 个非负整数 a1, a2, ..., aN,表示这 N 天里每天的行军里程。

输出描述

输出一个整数,表示在所有合格的“战略突击期”中,这 W 天的行军总里程的最大值。如果没有合格的突击期,输出 -1。

样例输入

7 3 2
10 11 10 15 16 14 20

样例输出

45
4.

情报站

题目描述

地下党建立了编号从 A 到 B 的秘密情报站。只有编号是 7 的倍数,且编号是奇数的站点才是安全的。

请统计范围 [A, B] 内安全站点的数量。

输入描述

第一行两个整数 A 和 B。

输出描述

输出一个整数,表示安全站点的数量。

样例输入

1 100

样例输出

7


公众号
客服 反馈
顶部