2026年全国青少年信息素养大赛算法应用主题赛(C++赛项-初赛-赛前冲刺模拟卷1:文末附答案和解析)
第一部分:选择题(每题只有一个正确答案)
1. 丝路商队要记录携带的丝绸数量,丝绸数量为整数且不会超过 2000 匹。在 C++ 中,下列哪个数据类型最适合定义丝路商队携带的丝绸总匹数?
A. float
B. int
C. char
D. double
2. 阅读以下代码,程序输出结果是什么?
cpp
char a = 'A';
int b = (int)a;
cout << b << endl;
A. A
B. 65
C. 97
D. 0
3. 丝路商队在大漠中行进,已知正午地面温度 p 与夜间地面温度 q。若温差大于等于 20 摄氏度,骆驼需要加厚脚垫保护。下列哪个分支结构能正确描述上述温差判断逻辑?
A. if (p - q <= 20)
B. if (p + q >= 20)
C. if (p - q >= 20)
D. if (p > 20 && q < 20)
4. 丝路商队从长安出发向西域前行,假设每天行进的里数记录在变量 day 中。下列代码段中,哪个选项可以实现"只要还没有到达目的地(day<20),就继续前进"?
A.
cpp
int day = 0;
while (day >= 20){
day = day + 1;
cout << "前进中" << endl;
}
B.
cpp
int day = 0;
while (day < 20){
day = day + 1;
cout << "前进中" << endl;
}
C.
cpp
int day = 0;
do {
day = day + 1;
cout << "前进中" << endl;
} while (day > 20);
D.
cpp
int day = 20;
while (day < 20){
day = day - 1;
cout << "前进中" << endl;
}
5. 以下代码使用了 C++ 中的 switch 语句,用来表示古丝绸之路上的几个贸易站:
cpp
int station = 2;
switch (station){
case 1:
cout << "玉门关 ";
case 2:
cout << "阳关 ";
case 3:
cout << "葱岭 ";
default:
cout << "撒马尔罕";
}
程序输出结果为以下哪个?
A. 阳关 撒马尔罕
B. 阳关 葱岭 撒马尔罕
C. 玉门关 阳关 葱岭 撒马尔罕
D. 撒马尔罕
6. 下列哪个 C++ 表达式可以正确计算 28 除以 5 的整数商?
A. 28 / 5
B. 28 % 5
C. 28 // 5
D. 28 \ 5
7. 驼队从长安出发,携带的物资包数 n 由键盘输入。阅读下面的代码段,当输入为 8 时,输出结果是什么?
cpp
int n;
cin >> n;
if (n = 8)
cout << "需加派骆驼" << endl;
else
cout << "正常出行" << endl;
A. 需加派骆驼
B. 正常出行
C. 程序编译错误
D. 输出不确定
8. 下列哪个 C++ 选项能正确实现"遍历 j 从 5 到 10(包含 10)的循环体执行"?
A. for (int j = 5; j <= 10; j++)
B. for (int j = 5; j < 10; j++)
C. while (j <= 10) { j++; }
D. for (int j = 5; j == 10; j++)
9. 丝路邮件系统用字符串数组 string mails[3] = {"敦煌","楼兰","于阗"};存储三个收件城市的名称,其中下标为[1] 的字符串是以下哪个?
A. 敦煌
B. 楼兰
C. 于阗
D. 编译错误
10. 假设 int a[5] = {10, 20, 30, 40, 50}; 在 C++ 中,以下哪个下标访问是 非法(即超出数组有效范围) 的?
A. a[0]
B. a[4]
C. a[5]
D. a[2]
11. 阅读以下计算骆驼饲料总量的程序:
cpp
int total = 0;
for (int i = 1; i <= 5; i++){
if (i % 2 == 0)
continue;
total += i;
}
cout << total << endl;
程序执行后,最终输出的 total 值为多少?
A. 6
B. 9
C. 15
D. 12
12. 骆驼商队在中途驿站搬运货物,货物的初始数量为 goods = 100。每到达一个驿站,货物数量会减少 20。补全以下 while 循环代码,使程序能模拟 直到货物数量不大于 40时停止运输 的逻辑。
cpp
int goods = 100;
while (__________){
goods -= 20;
cout << "当前剩余货物数量:" << goods << endl;
}
A. goods > 0
B. goods > 40
C. goods < 40
D. goods == 0
13. 阅读以下求重量总和的代码:
cpp
int weights[4] = {12, 15, 20, 18};
int sum = 0;
int i = 0;
while (i < 4){
sum = sum + weights[i];
i++;
}
数组最后一个元素即 weights[3] 的值是多少?整个代码的功能是怎样的?
A. sum 最后的结果是 45
B. weights[3] = 20,代码求出数组前三个元素之和
C. weights[3] = 18,代码求出数组全部元素之和
D. weights[4] = 18,代码无法编译
14. 丝路商队中的队长想要统计 7 天行程中每天前进的里数,他用 int step[7] 存放每天的数据,下列哪条语句能给 数组的第二个元素(该元素下标为 1) 赋值 35 里?
A. step[35] = 1;
B. step[1] = 35;
C. step[0] = 35;
D. step = 35;
15. 算盘的算珠使用 C++ 中的 break 控制 for 循环行为的示意代码如下:
cpp
for (int k = 0; k < 10; k++){
if (k == 5){
break;
}
cout << k << " ";
}
上述代码的运行结果是以下哪一项?
A. 1 2 3 4 5
B. 0 1 2 3 4 5
C. 0 1 2 3 4
D. 5 6 7 8 9
第二部分:判断题(判断下列描述的正误,正确的选"✔",错误的选"✘")
16. 在 C++ 中,逻辑运算符 && 表示"或(OR)","||" 表示"与(AND)"。
17. int arr[5]; 表示定义了一个可以存储五个整型元素的数组,分别用 arr[0]、arr[1]、arr[2]、arr[3]、arr[4] 表示。
18. 执行 int a = 5 / 2; 后,变量 a 的值是 2.5(浮点数类型)。
19. 在 C++ 语言中,数组的下标必须从 1 开始,数组元素的下标最大值就是数组定义的容量大小。
20. 在 if 语句中,小括号内 if (x = 5) 表示判断 x 与 5 是否相等,而不是将 5 赋值给 x 后再用于逻辑判断。
答案及解析
选择题答案
- B
- B
- C
- B
- B
- A
- A
- A
- B
- C
- B
- B
- C
- B
- C
判断题答案
- ✘
- ✔
- ✘
- ✘
- ✘
详细解析
1. 整数且不超过 2000,int 足够,float/double 多余,char 太小。
2. 'A' ASCII 码 65,强制转 int 得 65。
3. 温差 p-q >= 20,对应 if (p - q >= 20)。
4. 条件 day<20 时继续,B 正确。
5. station=2,case 2 匹配后无 break,穿透执行后续,输出 阳关 葱岭 撒马尔罕。
6. 整数除法 28/5 得商 5,% 是取余。
7. if (n = 8) 是赋值,结果为 8(真),输出"需加派骆驼"。
8. for (int j=5; j<=10; j++) 包含 10。
9. 字符串数组(下标1)是 "楼兰"。
10. 有效下标 0~4,a[5] 越界。
11. 累加奇数 1,3,5 → 9,偶数被 continue 跳过。
12. 要求"直到货物数量 ≤ 40 停止",即 goods > 40 时继续循环。初始 100 > 40 进入,减为 80(输出),再减为 60(输出),再减为 40 后条件 40>40 为假,循环退出。最终剩余 40,符合"不大于 40"。
- 若选 A (
>0) 会减到 0 才停,多余一次。 - C (
<40) 初始假,不执行。 - D (
==0) 初始假,不执行。
因此 B 正确。
13. weights[3]=18,循环累加全部 4 个元素得 65,C 正确。
14. 第二个元素下标 1,赋值 step[1]=35。
15. k=0 到 4 输出,k=5 时 break 退出,输出 0 1 2 3 4。
16. 错误。&& 是与(AND),|| 是或(OR)。
17. 正确。数组下标 0~4。
18. 错误。整数除法得 2,不是 2.5,且类型 int。
19. 错误。下标从 0 开始,最大下标为容量-1。
20. 错误。if (x = 5) 是赋值,不是相等判断;相等应使用 ==。
关注老师的专栏,查看完整版全国青少年信息素养大赛C++备赛资料(初赛+复赛):
https://blog.csdn.net/weixin_66461496/category_12969975.html
相关课程《全国青少年信息素养大赛C++初赛真题试卷及答案解析》(视频课)
https://www.bilibili.com/cheese/play/ss447406764
相关课程《全国青少年信息素养大赛C++复赛真题试卷及答案解析》(视频课)
https://www.bilibili.com/cheese/play/ep2532538
各种学习资料,助力大家一站式学习和提升!!!
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"########## 一站式掌握信奥赛知识! ##########";
cout<<"############# 冲刺信奥赛拿奖! #############";
cout<<"###### 课程购买后永久学习,不受限制! ######";
return 0;
}
【秘籍汇总】(完整csp信奥赛C++学习资料):
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:
CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转
CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转
信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转
4、csp信奥赛冲刺一等奖有效刷题题解:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
信奥赛C++提高组csp-j初赛&复赛真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转
5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转
· 文末祝福 ·
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"跟着王老师一起学习信奥赛C++";
cout<<" 成就更好的自己! ";
cout<<" csp信奥赛一等奖属于你! ";
return 0;
}

