2026年全国青少年信息素养大赛初赛真题(算法应用主题赛C++初中组初赛真题3:文末附答案和解析)

一、单项选择题(共10题,每题5分)
1. 在C++中,定义了整型变量 int score; 以下哪个赋值语句是合法的?
A. score = 'B';
B. score = 100;
C. score = false;
D. score = 99.5;
2. 小红需要定义一个变量来表示圆的半径(允许有小数部分),以下最合适的数据类型是?
A. int
B. char
C. long
D. double
3. 水果摊上苹果每斤m元,梨每斤n元,小明买了3斤苹果和3斤梨,则总花费的表达式为?
A. 3*m+n
B. m+n*3
C. 3*(m+n)
D. (m+n)/3
4. 某游乐场规定:身高不低于120厘米且年龄不超过12岁才可免费入场。设height表示身高,age表示年龄,以下哪个表达式符合免费入场的条件?
A. (height>120)&&(age<12)
B. (height>=120)||(age<=12)
C. (height>120)||(age<=12)
D. (height>=120)&&(age<=12)
5. 阅读以下代码:
cpp
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 4; j++) {
cout << "#";
}
cout << endl;
}
该程序共输出多少个#?
A. 12
B. 7
C. 9
D. 16
6. 阅读以下代码:
cpp
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 1) sum += i;
}
以上代码的作用是?
A. 计算1到11的累加和
B. 计算1到10的累加和
C. 计算1到10内的奇数的累加和
D. 计算1到10内的偶数的累加和
7. 以下关于C++数组的定义的说法,正确的是?
A. 数组长度可以为负数,如 int a[-1];
B. 数组长度可以是小数,如 int a[2.5];
C. int a[2] = {1,2,3}; 是合法的定义
D. int arr[] = {5,10,15}; 是合法的定义
8. 小乐定义了一个数组 int a[5] = {1,2}; 则数组a里面的元素的值为?
A. "1,2,随机值,随机值,随机值"
B. "1,2,2,2,2"
C. "1,2,1,2,1"
D. "1,2,0,0,0"
9. 小乐定义了数组 int a[5] = {2, 33, 14, 51, 26}; 现在想要输出51,则可以通过以下哪行代码实现?
A. cout << a[1];
B. cout << a[0];
C. cout << a[2];
D. cout << a[3];
10. 阅读以下代码:
cpp
char t[6] = {'A', 'b', 'C', 'd', 'E', 'f'};
int cnt = 0;
for (int i = 0; i < 6; i++) {
if ((t[i] >= 'A') && (t[i] <= 'Z')) cnt++;
}
cout << cnt;
输出结果是?
A. 6
B. 1
C. 3
D. 2
二、多项选择题(每题5分,全对得5分,错选、多选、少选均不得分)
11. 阅读以下代码:
cpp
int n = 10;
while (n < 100) {
if ((①) || (②) || (③)) cout << "YES";
else cout << n << endl;
n++;
}
请选择能填在填空①②③处的选项(多选)。
A. n/10 == 7
B. n%10 == 7
C. n/7 == 0
D. n%7 == 0
12. 以下关于整数 m=36 的描述,正确的有?
A. 36是9的倍数
B. 6是36的约数
C. 36是4的倍数
D. 36是5的倍数
13. 执行以下代码后,说法正确的有?
cpp
int c[5] = {10, 20, 30, 40, 50};
c[0] = 100;
c[3] = 400;
A. c[1]的值为20
B. c[0]的值为10
C. c[2]的值为20
D. c[3]的值为400
14. 阅读以下代码:
cpp
int a[9] = {1, 1, 2, 3, 5, 8, 13, 21, 34};
for (int i = 0; i < 9; i++) {
if (i % 3 == 0) cout << a[i] << " ";
}
运行上述程序,输出的数字有?
A. 13
B. 9
C. 1
D. 3
15. 在编写程序时,我们经常会用到输入输出语句,在C++中关于输入输出的写法正确的是?
A. cout << a << endl;
B. cin >> a;
C. char >> a >> endl;
D. continue << a << endl;
三、判断题(共5题,每题5分)
16. 小乐定义了两个int型变量a和b,现在需要判断a和b是否不相等,可以使用运算符!=。
正确 错误
17. 在C++中,定义数组 int b[] = {4, 8, 12}; 时,编译器会自动将数组长度设为3。
正确 错误
18. 在C++中,语句 a *= 3; 等价于 a = a * 3;。
正确 错误
19. 阅读以下C++代码:
cpp
if (score >= 60)
cout << "及格";
else
cout << "不及格";
若score的值为60,则程序输出"及格"。
正确 错误
20. 在不知道要循环多少次的情况下,优先使用while循环。
正确 错误
参考答案与解析
1. 答案:B
解析 :score 是 int 类型,只能存储整数。
- A:字符
'B'会隐式转换为ASCII码66,语法上允许但通常不推荐,本题要求"合法"且最直接的是整数赋值。 - B:直接赋值整数100,完全合法。
- C:布尔值
false会转换为0,合法但少见。 - D:浮点数99.5赋值给整型会截断为99,合法但丢失精度。
题目倾向于选择最标准、无争议的整数赋值,故选B。
2. 答案:D
解析 :半径可能有小数,必须使用浮点型。double 精度高,是处理小数的最佳选择。int、char、long 均为整型,不能存储小数部分。
3. 答案:C
解析 :总花费 = 3斤苹果费用 + 3斤梨费用 = 3×m + 3×n = 3×(m+n)。选项C正确。
A:漏了梨的斤数;B:运算顺序错误,先算n*3再加m;D:除法错误。
4. 答案:D
解析 :"不低于120"即身高 ≥ 120,"不超过12"即年龄 ≤ 12,"且"要求两个条件同时成立,用逻辑与 &&。故选D。
5. 答案:A
解析 :外层循环3次,内层循环每次输出4个#,共输出 3×4 = 12个#。
6. 答案:C
解析 :i % 2 == 1 判断i是否为奇数。循环 i 从1到10,当i为奇数时累加到sum。所以计算1~10内奇数的和。
7. 答案:D
解析:
- A:数组长度不能为负数。
- B:数组长度必须是整型常量表达式,不能是小数。
- C:初始化列表元素个数(3)超过了数组长度(2),语法错误。
- D:省略数组长度时,编译器根据初始化列表元素个数自动确定长度,合法。
8. 答案:D
解析 :C++中,数组部分初始化时,未显式指定的元素会被自动初始化为0。因此 a[0]=1, a[1]=2, a[2]=0, a[3]=0, a[4]=0。
9. 答案:D
解析 :数组下标从0开始:a[0]=2, a[1]=33, a[2]=14, a[3]=51, a[4]=26。要输出51应使用 a[3]。
10. 答案:C
解析:循环遍历字符数组,判断每个字符是否为大写字母(ASCII码在 'A'~'Z' 之间)。数组中有 'A'、'C'、'E' 三个大写字母,故cnt=3。
11. 答案:A、B、D
解析:循环要求输出"YES"的条件是 n 包含数字7或是7的倍数。
- 十位是7:
n/10 == 7 - 个位是7:
n%10 == 7 - 是7的倍数:
n%7 == 0
选项Cn/7 == 0仅当 n<7 时成立(整数除法),不符合要求。
12. 答案:A、B、C
解析:
- 36 ÷ 9 = 4,整除 → A正确。
- 36 ÷ 6 = 6,整除 → 6是36的约数 → B正确。
- 36 ÷ 4 = 9,整除 → C正确。
- 36 ÷ 5 = 7.2,不整除 → D错误。
13. 答案:A、D
解析 :初始 c = {10,20,30,40,50}。
执行 c[0]=100; 后,c[0]变为100;
执行 c[3]=400; 后,c[3]变为400。
其他元素不变:c[1]=20,c[2]=30。
所以A正确(c[1]=20),B错误(c[0]=100),C错误(c[2]=30),D正确(c[3]=400)。
14. 答案:A、C、D
解析 :循环中当 i % 3 == 0 时输出 a[i]。
i=0 → a[0]=1
i=3 → a[3]=3
i=6 → a[6]=13
输出顺序为 1, 3, 13,对应选项C、D、A。注意选项B的9不在输出中。
15. 答案:A、B
解析:
- A:
cout << a << endl;是标准输出语句,正确。 - B:
cin >> a;是标准输入语句,正确。 - C:
char是数据类型,不是流对象,不能使用>>运算符。 - D:
continue是循环跳转关键字,不能用于输出。
16. 答案:正确
解析 :!= 是C++中的不等于运算符,用法正确。
17. 答案:正确
解析:当数组定义时省略长度,编译器会根据初始化列表中的元素个数自动确定数组长度,此处为3。
18. 答案:正确
解析 :a *= 3 是复合赋值运算符,等价于 a = a * 3。
19. 答案:正确
解析 :score=60满足 score >= 60,因此执行 cout << "及格";。
20. 答案:正确
解析 :while 循环适用于循环次数未知、仅依赖条件判断的场景;for 循环更适合已知循环次数的情况。
关注老师的专栏,查看完整版全国青少年信息素养大赛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 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

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;
}
