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

一、单项选择题(共10题,每题5分)
1. 阅读以下代码:
cpp
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= i; j++) {
cout << "*";
}
cout << endl;
}
以下说法正确的是( )。
A. 内循环的执行次数与i的值有关。
B. 每行输出的*数量相同。
C. 外循环共执行了5次。
D. 内循环每次都执行4次。
2. 小明定义了一个整型变量来记录班级人数:int count; 下列赋值语句中,正确的是( )。
A. count = 45;
B. count = 3.14;
C. count = 'A';
D. count = true;
3. 小乐定义了数组 int a[5] = {2, 33, 14, 51, 26}; 现在想要输出 51,则可以通过以下哪行代码实现( )。
A. cout << a[0];
B. cout << a[1];
C. cout << a[2];
D. cout << a[3];
4. 以下关于 C++ 数组定义的说法,正确的是( )。
A. 数组长度可以是小数,如 int a[2.5];
B. 数组长度可以为负数,如 int a[-1];
C. int a[2]={1, 2, 3}; 是合法的定义。
D. int arr[]={5, 10, 15}; 是合法的定义。
5. 一个长方形的长为p,宽为q,则其面积的计算表达式为( )。
A. p+q
B. p*q
C. p/q
D. p-q
6. 在定义变量时,我们需要指定变量的数据类型。现在需要定义一个小数变量,可以使用以下哪种数据类型( )。
A. char
B. float
C. int
D. long
7. 小乐定义了一个数组 int a[3] = {1,2}; 则数组a里面的元素的值为( )。
A. {1,2,0,0}
B. {1,2,1,2,1}
C. {1,2,2,2}
D. {1,2,随机值/随机值/随机值}
8. 校运会要选拔护旗队,要求身高超过160厘米,体重不超过60千克。以下哪个逻辑表达式可以用于选拔要求( )。(备注:shenGao 表示身高,tiZhong 表示体重)
A. (shenGao>160)&&(tiZhong<60)
B. (shenGao>160)||(tiZhong<=60)
C. (shenGao>160)&&(tiZhong<=60)
D. (shenGao>160)||(tiZhong<=60)
9. 阅读以下代码:
cpp
int a[4] = {19, 8, 33, 27};
int max = 0;
for (int i = 0; i < 4; i++) {
if (a[i] > max) max = a[i];
}
cout << max;
程序运行后的输出结果为( )。
A. 19
B. 8
C. 33
D. 27
10. 阅读以下代码:
cpp
int count = 0;
for (int i = 1; i <= 20; i++) {
if (i % 2 == 0) count++;
}
程序运行结束后,count 的值为( )。
A. 5
B. 9
C. 10
D. 20
二、多项选择题(每题5分,全对得5分,错选、多选、少选均不得分)
11. 执行以下代码后,说法正确的有( )。
cpp
int c[5] = {10, 20, 30, 40, 50};
c[0] = 100;
c[3] = 400;
A. c[0] 的值为10
B. c[1] 的值为20
C. c[2] 的值为20
D. c[3] 的值为400
12. 幸运5游戏:如果数字是5的倍数,或者十位或个位上含有5,则跳过。对于变量 m(10<=m<=100),以下哪些条件可以用于判断需要跳过( )。
A. m%5==0
B. m/10==5
C. m%5==5
D. m%10==5
13. 在编写程序时,我们经常会用到输入输出语句,在 C++中关于输入输出的写法正确的是( )。
A. cin>>a;
B. continue<<a<<endl;
C. char>>a>>endl;
D. cout<<a<<endl;
14. 闰年的判断规则为:能被4整除但不能被100整除,或者能被400整除。请你完善以下代码:
cpp
int nian;
cin >> nian;
if (( ① ) && ( ② )) || ( ③ ) cout << "闰年";
else cout << "平年";
请选择能填在第①②③处的选项( )。
A. nian%4==0
B. nian%100!=0
C. nian%100==0
D. nian%400==0
15. 程序如下:
cpp
int e[5] = {};
for (int i = 0; i < 5; i++) cin >> e[i];
int cnt = 0;
for (int i = 0; i < 5; i++) {
if (e[i] % 2 == 0) cnt++;
}
cout << cnt << endl;
以下输入和输出符合程序执行结果的有( )。
A. 输入: 2 4 6 8 10 输出: 5
B. 输入: 1 3 5 7 9 输出: 3
C. 输入: 1 2 3 4 5 输出: 2
D. 输入: 6 7 8 9 10 输出: 3
三、判断题(共5题,每题5分)
16. 在C++中,while循环只要循环条件为真,就会一直执行循环体,永远无法退出。( )
正确 错误
17. 在C++中,定义数组 int b[] = {4, 8, 12}; 时,编译器会自动将数组长度设为3。( )
正确 错误
18. 阅读以下C++代码:
cpp
if (shenGao > 150)
cout << "全票";
else
cout << "半价票";
现在输入150给变量 shenGao,则会输出全票。( )
正确 错误
19. 在C++中,表达式 10 % 3 的结果是1。( )
正确 错误
20. 在C++中,语句 a*=3; 等价于 a=a*3;。( )
正确 错误
参考答案与解析
一、单项选择题
1. 答案:A
解析:外循环 i=1~4,共4次(C错)。内循环 j=1~i,当 i=1 时执行1次,i=2时2次,i=3时3次,i=4时4次,因此内循环次数与i有关(A对),每行输出*数量不同(B错),内循环次数变化(D错)。
2. 答案:A
解析:整型变量应直接赋整数值。B浮点会截断,C字符会转ASCII,D布尔转1,虽语法允许但语义不直接,最正确的是A。
3. 答案:D
解析:数组下标从0开始,a[0]=2, a[1]=33, a[2]=14, a[3]=51, a[4]=26,输出51需用a[3]。
4. 答案:D
解析:A长度不能为小数;B长度不能为负;C初始值个数超过长度,编译错误;D省略长度时编译器自动推断为3,合法。
5. 答案:B
解析:长方形面积 = 长 × 宽 = p * q。
6. 答案:B
解析:小数应使用浮点类型,float是单精度浮点型。char、int、long均为整型。
7. 答案:A
解析:int a[3] = {1,2} 初始化前两个元素为1和2,第三个未指定则默认初始化为0,因此数组为{1,2,0}。选项A写为{1,2,0,0}可能是排版问题,但最接近正确答案。
8. 答案:C
解析:身高超过160为 shenGao>160,体重不超过60为 tiZhong<=60,需同时满足,用&&连接。
9. 答案:C
解析:程序找最大值。max初始0,比较后依次为19, 33, 最终max=33。
10. 答案:C
解析:1~20中偶数有2,4,6,8,10,12,14,16,18,20共10个,count=10。
二、多项选择题
11. 答案:B、D
解析:初始{10,20,30,40,50},c[0]=100改为{100,20,30,40,50},c[3]=400改为{100,20,30,400,50}。c[0]=100(A错),c[1]=20(B对),c[2]=30(C错),c[3]=400(D对)。
12. 答案:A、B、D
解析:跳过条件:是5倍数m%5 == 0或十位为5(m/10 == 5)或个位为5(m%10 == 5)。C选项m%5==5不可能成立(余数小于5)。
13. 答案:A、D
解析:cin配合>>输入,cout配合<<输出,endl用于换行。B中continue是关键字,C中char是类型,均不能用于输入输出。
14. 答案:A、B、D
解析:闰年条件为 (nian%4 == 0 && nian%100 != 0) || (nian%400 == 0),故①填A,②填B,③填D。
15. 答案:A、C、D
解析:程序统计5个数中偶数的个数。A:5个全偶→5,正确;B:全奇→0,不是3,错误;C:2和4两个偶→2,正确;D:6,8,10三个偶→3,正确。
三、判断题
16. 答案:错误
解析:while循环条件为真时执行,但通常循环体内会修改条件使其最终为假,从而退出。只有写成while(true)且无break才会无限循环,并非所有while都永远无法退出。
17. 答案:正确
解析:省略数组长度时,编译器根据初始化列表元素个数自动确定长度,此处有3个元素,长度为3。
18. 答案:错误
解析:条件为shenGao>150,输入150时条件不成立(150>150为假),执行else分支输出"半价票",不是"全票"。
19. 答案:正确
解析:10除以3商3余1,取模结果就是1。
20. 答案:正确
解析:复合赋值运算符*=等价于 a = a * 3。
关注老师的专栏,查看完整版全国青少年信息素养大赛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;
}
