
一、单选题
1. 红军小分队连夜行军,以每天30公里的速度在草地行军了3天。通讯员用C++表达式 30 * 3 计算总里程,得出结果是多少?
A. 30
B. 90
C. 100
D. 120
2. 小英雄雨来为了掩护交通员李大叔,需要在村里的5个秘密掩体之间转移。如果用C++数组 int hideouts[5]; 来模拟存储这5个掩体的编号,该数组合法的最大下标是多少?
A. 6
B. 5
C. 4
D. 1
3. 井冈山斗争时期,红军通信员为了防备敌人截获,将秘密口令分成了两段传递。请观察以下C++密码拼接程序,电报机的屏幕上最终会输出什么情报内容?
string s1 = "星火";
string s2 = "燎原";
cout << s1 + s2;
A. 星火燎原
B. "星火""燎原"
C. 燎原星火
D. 报错
4. 1935年长征途中,为防敌军无线电测向台测定我军位置,红军对电台发报有着极其严格的纪律。假设你正在编写发报机的控制程序,现有三个布尔(bool)变量代表当前状态:
has_intel: 是否截获紧急情报
has_order: 首长是否下达发报命令
enemy_listening: 敌军测向台是否正在侦听
【核心军规】只有满足条件:"(有紧急情报或首长下令)且(敌军测向台未侦听)",才允许启动发报。
下列哪段C++代码能正确实现这条严格的判断逻辑?()
A. if (has_intel && has_order && !enemy_listening)
B. if (has_intel || has_order && !enemy_listening)
C. if ((has_intel || has_order) && !enemy_listening)
D. if ((has_intel || has_order) && enemy_listening)
5. 延安大生产运动时期,发扬自力更生精神的八路军战士收获了7筐南瓜,准备平分给2个有困难的军属家庭。在C++后勤分配程序中:int a = 7; int b = 2;,因为必须按"整筐"分配,请问代表每家分得南瓜筐数的表达式 a / b 结果是?
A. 3.5
B. 14
C. 4
D. 3
二、多选题
1. (多选)红军长征是一次连续不断的伟大远征。指挥部研发"红色任务模拟器"时,使用C++中的数组来记录每天的行军里程。关于数组的特性,以下说法正确的是?
A. 数组可以用来存储一组相同类型的数据集合,例如全部为整数的行军里程数。
B. 就像红军连绵不断的行军队伍一样,数组元素的内存地址也是连续的。
C. int miles[3] = {30, 40, 50, 60}; 是一句正确的声明,成功记录了4天的里程。
D. 使用数组能够有效减少同类型变量的重复定义,提高总部的统筹效率。
2. (多选)"红军不怕远征难,万水千山只等闲。"二万五千里的长征奇迹,是红军战士用双脚一步一步走出来的。不积跬步,无以至千里。假设我们需要编写一个程序来记录红军战士的行军步数,定义了整型变量 int step = 0;。为了记录新走的一步,我们需要让变量 step 的值增加 1。请问下列哪些C++代码可以实现这一目标?()
A. step++;
B. step = step + 1;
C. step += 1;
D. ++step;
3. (多选)长征过草地时,红军各连队为了防备敌人偷袭,设定了复杂的夜间口令。C++"红色战术系统"用 string 变量来校验这些口令。以下关于口令字符串的语法,符合C++规定的是?
A. 哨兵可以使用 < 或 > 比较两个口令的字典顺序。
B. s[0] 代表获取该夜间口令 s 的首字母。
C. 连长可以通过 s.length() 检查口令的长度是否符合保密规定。
D. 可以使用减号 s1 - s2 从旧口令中减去作废的字符来生成新口令。
4. (多选)延安大生产运动中,八路军战士发扬自力更生精神,收获了5筐小米(int a = 5;),准备尽量平均分给前线的2个突击班(int b = 2;)。在C++后勤分配程序中评估下列条件,哪些结果为真(true)?
A. a + b == 7
B. a / b == 2.5
C. a % b == 1
D. a * b == 10
5. (多选)"重走长征路"C++模拟器使用 for 和 while 循环来还原红军的艰苦跋涉。关于这两种循环,以下说法正确的是?
A. 从算法逻辑上看,for 循环都可以等价改写为 while 循环。
B. for 循环通常更适用于提前已知任务次数的场景。
C. while 循环只能判断真假,不能在内部做计数器加减。
D. 它们都可以通过增加判断条件,来控制何时结束循环。
三、编程题
第1题 粮草先行
【题目描述】
"兵马未动,粮草先行。"
长征途中,红军严格遵守"三大纪律八项注意",在聘请老乡帮忙运输物资时,坚持买卖公平,绝不亏待群众。后勤部制定了一套标准的运费结算规则:
运费计算规则,为了合理分配体力与报酬:
• 基础运费:物资重量在 3 千克以内(含 3 千克),属于标准负重,统一支付 10 元(银元)。
• 超重补贴:如果物资超过 3 千克,超过的部分每 1 千克加收 3 元的辛苦费。
输入一个整数 W 代表物资的重量,请编写程序帮助司务长计算并输出应支付的总运费。
【输入格式】
一个整数 W(表示重量)。
【输出格式】
一个整数(表示总运费)。
【输入输出样例#1】
输入#1
2
输出#1
10
【输入输出样例#2】
输入#2
3
输出#2
10
【输入输出样例#3】
输入#3
5
输出#3
16
#include<iostream>using namespace std;intmain(){int W;cin >> W;if (W <= 3) {cout << 10 << endl;} else {cout << 10 + (W - 3) * 3 << endl;}return 0;}解析:3千克及以内收费10元;超过3千克的部分,每千克加收3元。
第2题 走出草地
【题目描述】
"风雨浸衣骨更硬,野菜充饥志越坚。"
红军长征过草地时,补给极其困难。每位战士身上的干粮(N)是走出草地的关键。
假设行军非常艰苦,消耗量随着体力的下降每天都在增加:
第 1 天行军消耗 1 份干粮;
第 2 天行军消耗 2 份干粮;
第 3 天行军消耗 3 份干粮……
以此类推,第 i 天需要消耗 i 份干粮。
每天清晨,战士会检查袋子里的剩余干粮。如果剩余量足够支付当天的消耗(即 N ≥ i),则继续坚持行军;如果不够,则意味着弹尽粮绝,必须等待救援。
输入一个整数 N,请计算战士靠这些干粮最多能完整行军多少天。
【输入格式】
一个整数 N(初始干粮总数)。
【输出格式】
一个整数(完整行军的天数)。
【输入输出样例#1】
输入#1
7
输出#1
3
【输入输出样例#2】
输入#2
10
输出#2
4
【输入输出样例#3】
输入#3
100000
输出#3
446
【说明提示】
样例1解释:
第 1 天:需要 1 份,剩余 7 份。7 ≥1,足够。消耗后剩 7 - 1 = 6 份。
第 2 天:需要 2 份,剩余 6 份。6 ≥2,足够。消耗后剩 6 - 2 = 4 份。
第 3 天:需要 3 份,剩余 4 份。4 ≥3,足够。消耗后剩 4 - 3 = 1 份。
第 4 天:需要 4 份,剩余 1 份。1 < 4,不够。
结论:只能坚持 3 天。
#include<iostream>using namespace std;intmain(){int N;cin >> N;int day = 0;int sum = 0;while (true) {day++;sum += day;if (sum > N) {day--;break;}}cout << day << endl;return 0;}解析:每天消耗量递增(1, 2, 3, ...),累加直到超过 N,则前一天为最大完整行军天数。
第3题 信号强度极差
【题目描述】
"红军的眼睛和耳朵,决胜于千里之外。"
在长征途中,红军的无线电侦察台屡建奇功。他们夜以继日地监听敌人的电台信号,从嘈杂的电波中捕捉关键情报。
假设侦察员小李记录下了敌军电台的 n 次信号强度数据。为了分析敌军电台的发射规律,我们需要计算这些信号强度的极差(即:最强信号与最弱信号的差值)。
输入一个正整数 n,随后输入 n 个代表信号强度的正整数。请编程找出其中的最大值和最小值,并输出它们的差。
【输入格式】
第一行:一个正整数 n(1 ≤ n ≤ 100)。
第二行:n 个正整数(信号强度),用空格隔开。
【输出格式】
一个整数(最大值减去最小值的差)。
【输入输出样例#1】
输入#1
3
1 4 7
输出#1
6
【输入输出样例#2】
输入#2
5
1 3 4 9 2
输出#2
8
【输入输出样例#3】
输入#3
5
7 7 7 7 7
输出#3
0
【数据范围】
输入数据总数不超过 100 个。
信号强度范围为 1 ≤ 强度值 ≤ 1000。
#include<iostream>using namespace std;intmain(){int n;cin >> n;int a[105];for (int i = 0; i < n; i++) {cin >> a[i];}int mx = a[0], mn = a[0];for (int i = 1; i < n; i++) {if (a[i] > mx) mx = a[i];if (a[i] < mn) mn = a[i];}cout << mx - mn << endl;return 0;}解析:遍历数组找出最大值和最小值,输出两者的差。
第4题 物资统计
【题目描述】
解放战争时期,军民团结一心。前线指挥部正在评选支援前线的模范队,需要统计各小队运送的粮食总量(单位:斤)。由于敌军的无线电干扰,接收到的电报数据掺杂了乱码噪点,用字符 # 表示。
作为通讯员,请你编写程序,发扬一丝不苟的作风,剔除电文中的噪点 #,并找出运送物资数量最多的小队。
【输入格式】
第一行,一个正整数 n,表示小队的数量;
接下来 n 行,每一行给出一个小队的代号与物资数量,中间用一个空格隔开。代号与物资数量均不包含空格,物资数目有可能包含 #,除此之外都由数字组成,且无前导零或小数点。
【输出格式】
输出物资运送总量最多的小队的代号,以及相应的物资实际数量。若有多个小队物资数量并列最大,输出顺序靠前的小队代号。
【输入输出样例#1】
输入#1
2
abc 1224#89720
输出#1
ab 1230987123
【输入输出样例#2】
输入#2
4
TeamZunYi 884#7
TeamXiBaiPo 88#48###
输出#2
TeamYanAn 8848
【输入输出样例#3】
输入#3
3
XuzhouMilitia 9#999999#999999#9999
LinyiMilitia 1#000000000000#000000
SuxianMilitia 999#9999999#999999#999
输出#3
LinyiMilitia 10000000000000000000
【数据范围】
特殊性质:
测试点物资数量噪点
40% ≤ 9×10¹⁸ 无
30% ≤ 10¹⁰⁰ 无
#include<iostream>#include<string>using namespace std;intmain() {int n;cin >> n;string bestName;string bestNumStr;for (int i = 0; i < n; i++) {string name, raw;cin >> name >> raw;string numStr = "";for (char c : raw) {if (c != '#') numStr += c;}if (i == 0 || numStr.length() > bestNumStr.length() ||(numStr.length() == bestNumStr.length() && numStr > bestNumStr)) {bestName = name;bestNumStr = numStr;}}cout << bestName << " " << bestNumStr << endl;return 0;}解析:读入每行数据,剔除物资数量中的 # 字符,比较处理后数字串的长度(或数值大小),记录最大值对应的小队。注意数据范围可能极大,需用字符串处理大数。
感谢您抽出

.

.

来阅读本文
往/期/回/顾
REVIEW
