2026信息素养大赛初赛真题解析(C++小学组其一)

四季读书网 2 0
2026信息素养大赛初赛真题解析(C++小学组其一)

2026信息素养大赛初赛C++组别已经落下帷幕啦,各位小伙伴发挥得怎么样呀?现在真题陆续流出,我们整理了一套小学组(4-6年级)的真题并附上详细解析。快来一起对对答案吧~ 😄

单项选择

1、 执行 for(int i=1; i<=3; i++) { cout << i; } 后,屏幕输出为(5 分)
A.123
B.1234
C.234
D.012

参考答案:A
解析:循环从 i=1 开始,每次输出 i 的值,然后 i++,直到 i=3 输出后,i 变为4,不满足 i<=3 退出。所以依次输出 1、2、3,拼成“123”。

2、 如果一个正整数 b 是 5 的倍数且能整除 30,它的C++判断表达式应该是(5 分)
A.b % 5 == 0 && b % 30 == 0
B.b % 5 == 0 && 30 % b == 0
C.5 % b == 0 && 30 % b == 0
D.b / 5 == 0 && 30 / b == 0

参考答案:B
解析

  • • “b 是 5 的倍数” ↔ b % 5 == 0(余数为0)。
  • • “b 能整除 30” ↔ 30 除以 b 的余数为 0,即 30 % b == 0

两个条件同时成立用 && 连接,所以选 B。
💡 注意:区分“除”和“除以”——“b能整除30”等价于“30能被b整除”,即 30 % b == 0

3、 若 int x = 8, y = 8;,则表达式 x == y 的值为(5 分)
A.true
B.false
C.8
D.0

参考答案:A
解析x == y 是比较是否相等的关系运算符,相等时返回布尔值 true。8 == 8 相等,所以选 A。

4、 执行代码 int a; cin >> a; 时,若从键盘输入 50 后按回车,变量 a 的值为(5 分)
A."50"
B.50
C.'5'
D.0

参考答案:B
解析cin >> a 会读取键盘输入的整数并存入变量 a 中。输入 50,a 的值就是整数 50。选项A是字符串,C是字符,都不对。

5、 阅读以下代码,屏幕最终输出为(5 分)
int n = 40;
if (n >= 60) cout << "Pass";
cout << "Over";
A.PassOver
B.Over
C.Pass
D.无输出

参考答案:B
解析:注意 if 后面没有花括号,所以只有 cout << "Pass"; 属于 if 体。条件 n>=60 为假,因此跳过 "Pass",然后继续执行后面的 cout << "Over";,最终输出 "Over"
💡 注意:if 不成立时,后面的语句依然会执行哦~只有被 if 控制的语句才会跳过。

6、 若要在C++中存储一个同学的年龄(如12岁),最合适的数据类型是(5 分)
A.int
B.double
C.char
D.bool

参考答案:A
解析:年龄通常是整数,用 int 最合适。double 是浮点数,浪费空间且处理麻烦;char 只能存单个字符(虽也能存小整数,但本意是表示字符,存年龄会混淆含义、可读性差,因此不合适);bool 只能存 true/false。所以选 A。

7、 判断一个整数 n 是否为奇数的正确C++表达式是(5 分)
A.n % 2 == 0
B.n % 2 != 0
C.n / 2 == 1
D.n % 2 == 2

参考答案:B
解析:奇数就是除以2余数不为0,所以 n % 2 != 0。A 是判断偶数;C 只能判断 n 是否等于2;D 中余数不可能为2。选 B。

8、 在C++中,表达式 20 % 6 的计算结果是(5 分)
A.3
B.3.33
C.2
D.0

参考答案:C
解析% 是取余运算符,20 除以 6 得商 3 余 2,所以结果是 2。选 C。

9、 阅读以下代码,程序运行后的输出结果是(5 分)
int c[6] = {4, 9, 16, 25, 36, 49};
int s = 0;
for(int i=0; i<6; i++) {
 if(c[i] % 2 == 0) {
  s += c[i];
 }
}
cout << s;
A.25
B.43
C.56
D.139

参考答案:C
解析:循环遍历数组,c[i] % 2 == 0 判断是否为偶数。数组中的偶数是 4、16、36,求和:4+16+36 = 56。选 C。

10、 已知代码 int score[4] = {90, 85, 92, 78};,执行 cout << score[3]; 后,屏幕输出为(5 分)
A.90
B.85
C.92
D.78

参考答案:D
解析:数组下标从 0 开始:score[0]=90score[1]=85score[2]=92score[3]=78。所以输出 78。选 D。

多项选择

11、 阅读以下C++代码片段,关于其执行逻辑的描述,正确的有(5 分)
int arr[5] = {2, 7, 4, 9, 6};
int result = 0;
for(int i=0; i<5; i++) {
 if(arr[i] > 5) {
  result++;
 }
}
cout << result;
A.程序运行后屏幕最终输出的结果为 3
B.元素 5 满足条件 arr[i] > 5
C.程序的功能是统计数组中大于5的元素个数
D.for循环体内的if条件判断共执行了5次

参考答案:A、C、D
解析

  • • A:大于5的元素有 7、9、6 共三个,result++ 三次,输出3 ✅
  • • B:数组中根本没有元素5,且 5>5 为假 ❌
  • • C:统计大于5的个数 ✅
  • • D:循环5次,每次执行if判断,共5次 ✅

12、 关于C++中while循环的特点,下列说法正确的有(5 分)
A.while循环属于先判断条件再执行循环体的结构
B.while循环语法中包含初始化、条件、更新三个表达式
C.while循环特别适合处理不知道循环次数的场景
D.若while条件始终为true且循环体不改变条件,将导致死循环

参考答案:A、C
解析

  • • A:正确,while 是“当型循环”,先判断后执行 ✅
  • • B:错误,while 后面只跟一个条件表达式,初始化和更新需自己处理 ❌
  • • C:正确,例如输入直到结束标记,次数未知时 while 很合适 ✅
  • • D:不严谨——条件始终为 true 且循环体内无 breakreturn 等跳出语句时才会死循环。题目表述缺少“且没有跳出语句”的前提,所以不选 ❌

13、 若 int n = 10;,执行下列语句后,n 的值变为 15 的有(5 分)
A.n += 5;
B.n = n + 5;
C.n -= 5;
D.n *= 2;

参考答案:A、B
解析

  • • A:n += 5 → 15 ✅
  • • B:n = n + 5 → 15 ✅
  • • C:n -= 5 → 5 ❌
  • • D:n *= 2 → 20 ❌

14、 已知 bool p = false, q = true;,下列逻辑表达式结果为 false 的有(5 分)
A.p && q
B.p || !q
C.!p
D.!q

参考答案:A、B、D
解析

  • • A:false && true = false ✅
  • • B:!q = false,false || false = false ✅
  • • C:!p = true ❌
  • • D:!q = false ✅

15、 在遍历或查询一维数组时,下列操作可能导致程序运行错误或逻辑异常的有(5 分)
A.循环条件误写为 i <= n(n为数组长度)
B.使用0作为数组下标进行访问
C.在循环体外一次性打印整个数组名
D.按照 0 到 n-1 的顺序依次访问元素

参考答案:A、C
解析

  • • A:有效下标 0~n-1,i <= n 会导致 i=n 时越界访问,可能崩溃 ✅
  • • B:下标0合法,不会出错 ❌
  • • C:cout << 数组名 输出的是地址,不是元素内容,属于逻辑异常 ✅
  • • D:标准正确遍历方式,不会出错 ❌

判断题

16、 在C++程序中,若表达式 a % b 的结果为 0,则说明 a 是 b 的倍数。(5 分)

参考答案:正确
解析a % b == 0 表示 a 除以 b 余数为 0,即 b 能整除 a,所以 a 是 b 的整数倍(b≠0)。正确。

17、 若要统计一维数组中满足特定条件的元素个数,通常需要将for循环体嵌套在if分支语句内部。(5 分)

参考答案:错误
解析:常规写法是 for 在外,if 在内

for(...) {
    if
(条件) 计数++;
}

题目说“将 for 循环体嵌套在 if 分支语句内部”,意味着 if 里面写 for,比如:

if(某条件) {
    for
(...) { ... }
}

这不是统计数组元素的常规方法,所以题干描述错误。

18、 在for循环嵌套中,外层循环变量每变化一次,内层循环都会重新从初始值开始,完整执行一遍。(5 分)

参考答案:错误
解析:这句话只有在“内层循环的初始化放在内层 for 的头部”时才成立。例如:

for(int i=0; i<3; i++) {
    for
(int j=0; j<2; j++) {
      //...

    }
}

但如果程序将内层循环变量定义在外部且没有在每次外层循环时重置,就不会重新从初始值开始。

💡 注:可能存在争议!不同教材对“for循环嵌套”的默认理解可能不同,若官方按典型写法判定为“正确”也是可能的。但本频道坚持认为题干“都会”一词过于绝对,故判为错误。

19、 while 循环在执行循环体之前,不需要先判断循环条件是否成立。(5 分)

参考答案:错误
解析:while 循环是“先判断,后执行”,条件不成立时循环体一次也不执行。与 do-while 不同。所以错误。

20、 在C++中,cout << "Hello" << 2024; 会在屏幕上输出 Hello2024。(5 分)

参考答案:正确
解析cout 连续输出字符串和整数,中间无额外空格或换行,结果为 Hello2024。正确!

结语

本次竞赛考察的是 C++ 中非常基础的知识点,参考答案及解析仅代表本频道观点,不代表官方正确答案,欢迎各位老师、同学们一起讨论~

初赛成绩及晋级结果预计一周左右出来,祝大家顺利晋级,咱们复赛见~ 🚀

抱歉,评论功能暂时关闭!