#1631. 信息素养大赛——小学组模拟卷 3
信息素养大赛——小学组模拟卷 3
信息素养大赛——小学组模拟卷 3
一、单选题(共20题,每题2分,共40分)
1.2026 年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )
{{ select(1) }}
- 检测重心的重力传感器
- 预装的 AI 算法程序
- 接收动作指令的遥控器
- 拍摄其他机器人的摄像头
2.小明学习编程有一段时间了,他想在图形环境下把当前目录(或文件夹)下的文本文件 20260314.txt 的名字改一下。他用鼠标左键点击选中该文件后,立即完成下面哪个操作后将处于输入新文件名的状态( )
{{ select(2) }}
- 单击右键并选择弹出菜单中的 “重命名”
- 双击左键
- 按功能键 F1
- 按回车键
3.下面 C++ 代码可以执行,有关说法正确的是( )
double PI = 3.1415926;
cout << (PI);
{{ select(3) }}
- 为了方便初学者,cout <<(PI) 和 cout << (pi) 效果相同,即变量的大小写不敏感
- cout << (PI) 修改为 cout << (Pi) 能正常执行
- 不能用 PI 做变量名,因为要保存圆周率这个常量
- 将程序中全部 PI 都改写为 Pai,将能正常执行,不会报错
4.C++ 表达式 3 * 3 % 2 的值为( )
{{ select(4) }}
- 81
- 27
- 4
- 1
5.下面 C++ 代码的相关说法,正确的是( )
int N = 0;
cin >> N;
cout << (N);
{{ select(5) }}
- 执行时如输入 10,则将输出 10
- 执行时如输入 3.14,将报错
- 执行时如输入 ABC,将报错
- 执行时如输入 - 10,将报错
6.下面 C++ 代码执行时,其说法正确的是( )
int M = 0, N = 0;
cin >> M;
cin >> N;
if (N > M)
cout << (M - N);
else
cout << (N - M);
{{ select(6) }}
- 如果输入一个正数和一个负数,其输出结果肯定是大于 0
- 不管是负整数、正整数亦或 0,其结果肯定是大于等于 0
- 如果 N 和 M 是相等的整数,将不会有输出
- 如果 N 和 M 输入带有小数点的数,将按整数部分计算
7.下面 C++ 代码执行后的输出是( )
int i, tnt = 1;
for (i = 0; i < 5; i++){
printf("%2d%2d\n", tnt, i);
tnt *= i;
}
{{ select(7) }}
- 1\n24 5
- 1 10 5
- 1 0 4
- 1 0 5
8.一个正整数的每位都是个位数,称为数位,最高位非 0。下面的 C++ 代码用于求正整数的所有数位之和,简称数位和。为实现该目标,横线处应该填写的代码是( )
int N;
cin>>N;
int tnt=0;
while (N!=0){
_________
_________
}
cout<<"N的数位和为:"<<tnt;
{{ select(8) }}
- tnt+=N/10; N/=10;
- tnt+=N%10; N/=10;
- tnt+=N/10; N%=10;
- tnt=tnt+N%10; N%=10;
9.小明想要快速知道任给一个正整数中有多少个奇数位(数位值是奇数),下面的 C++ 代码是其实现,横线处应该填入的代码是( )
int N;
cin>>N;
int odd_count=0;
int old_number=N;
while (N!=0){
if(_________) odd_count += 1;
N=(N-N%10)/10;
}
cout << old_number<<"中共有"<<odd_count<<"个奇数";
{{ select(9) }}
- N%10%2==0
- N%10%2==1
- N/10/2==1
- N/2/10==0
10.执行下面 C++ 代码可以判断一个 6 位正整数 N 的高 3 位和低 3 位的差是否是 314 的倍数。横线处应该填入( )
cin >> N;
if (___________________________)
cout << N << "符合条件" << endl;
{{ select(10) }}
- ((N % 1000) - (N / 1000)) / 314 == 0
- ((N / 1000) - (N % 1000)) % 314 == 0
- ((N % 1000) - (N / 1000)) / 314
- ((N / 1000) - (N % 1000)) % 314
11.下面代码用来找出输入的 N 个正整数中最大的一个。如果将代码段用流程图来表示,则 L1 标记的代码行应该使用的图形是( )
int N, max=0, val;
cin >> N;
while(N){
cin >> val;
if(val > max) // L1
max = val;
N--;
}
cout << max;
{{ select(11) }}
- 圆形框
- 椭圆形框
- 平行四边形框
- 菱形框
12.下面选择项中,与 C++ 表达式 !(x > 5 && y <= 10) 等价的是( )
{{ select(12) }}
- x <= 5 && y > 10
- x>5 || y<=10
- x <= 5 || y > 10
- ! x > 5 && ! y <= 10
13.某同学执行 C++ 代码 cout << ((0.1 + 0.2) == 0.3) 时输出 0,下面最可能的原因是( )
{{ select(13) }}
- C++ 的 + 运算符在处理小数时存在 bug
- 0.1、0.2 和 0.3 在计算机中无法用二进制浮点数精确表示,导致 0.1+0.2 的结果与 0.3 存在微小误差
- == 运算符不能用于比较浮点数,只能用于整数
- 因为 0.1+0.2 的数学结果不等于 0.3
14.下面的 C++ 代码段执行后其输出是( )
tnt = 0;
for (int i = 0; i < 5; i++){
for (int j = 0; j < i; j++){
cout << tnt << "#";
tnt += 1;
}
}
cout << tnt;
{{ select(14) }}
- 0#1#3#6#10#10
- 1#2#3#4#5#6#7#8#9#10#10
- 10#10
- 10
15.下面的 C++ 代码执行之后的输出是( )
for ( int i = -2; i < 2; i++)
if (not i % 3)
cout << i << "#";
{{ select(15) }}
- 0#
- -2#-1#1#
- -1#0#
- -2#0#1#
16.下面 4 个选项中,与下面 C++ 代码段具有相同效果的是( )
i = 0;
while (i < 5){
i += 1;
cout << i;
}
{{ select(16) }}
- for (i = 0; i < 5; i++) cout << i;
- for (i = 1; i < 5; i++) cout << i;
- for (i = 0; i < 6; i++) cout << i;
- for (i = 1; i < 6; i++) cout << i;
17.某学校图书馆的借阅卡号由 6 位整数组成,第 6 位是校验码。下面的 C++ 代码段用于判断卡号是否正确,横线处应填入的代码是( )
cin >> N;
order_num = N / 10;
check_num = N % 10;
tnt = 0;
for (i = 0; i < 5; i++){
_________
order_num /= 10;
}
if (__________________)
cout << "符合校验规则";
else
cout << "不符合校验规则";
{{ select(17) }}
- tnt += order_num / 10; tnt / 10 == check_num
- tnt += order_num % 10; tnt % 10 == check_num
- tnt = order_num / 10 + tnt; tnt % 10 == check_num
- tnt = order_num % 10; tnt / 10 == check_num
18.下面的 C++ 代码段正常执行后其输出的数字图形是( )
for (i = 1; i < 5; i++){
for (j = 1; j < i+1; j++)
cout << j;
cout << endl;
}
A.
1
12
123
1234
B.
1
22
333
4444
C.
1
21
321
4321
D.
4
34
234
1234
{{ select(18) }}
- A
- B
- C
- D
19.某学校举办 “校园演讲比赛”,8 位评委打分。以下核心程序段依次输入 8 个分数,并计算最终得分。横线处应填入( )
total_score = 0;
high_count = 0;
for (i = 0; i < 8; i++){
cout << "请输入评委分数: ";
cin >> score;
if (score >= 6){
_________
_________
}
}
if (high_count >= 5)
cout << total_score;
else
cout << 0;
{{ select(19) }}
- total_score += score; high_count += 1;
- high_count += score; total_score += score;
- high_count += total_score; total_score += score;
- high_count *= 1; total_score *= score;
20.小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。( )
{{ select(20) }}
- 正确
- 错误
二、阅读程序(共3题,判断题2分/题+选择题3分/题,共30分)
第一题:
#include <iostream>
using namespace std;
int main() {
int arr[6] = {3, 6, 9, 12, 15, 18};
for(int i = 0; i < 3; i++) {
int t = arr[i];
arr[i] = arr[5 - i];
arr[5 - i] = t;
}
for(int i = 0; i < 6; i++) {
cout << arr[i] << " ";
}
return 0;
}
1.判断题
(1)程序输出为 18 15 12 9 6 3。( )
{{ select(21) }}
- 对
- 错
(2)如果将循环条件改为 i < 6,程序会越界访问。( )
{{ select(22) }}
- 对
- 错
(3)删除 int t = arr[i]; 并将交换语句改为arr[i] = arr[5-i]; arr[5-i] = arr[i]; 可以实现相同效果。( )
{{ select(23) }}
- 对
- 错
2.选择题
(1)若将数组初始化为 {1,2,3,4,5,6},则输出是( )
{{ select(24) }}
- 1 2 3 4 5 6
- 6 5 4 3 2 1
- 6 5 4 3 2 1 但顺序不同
- 6 5 4 3 2 1 与循环次数无关
(2)若将循环改为 for(int i = 0; i <= 5; i++),则( )
{{ select(25) }}
- 程序正常运行,输出与原结果相同
- 程序正常运行,输出为原数组
- 程序可能越界访问或逻辑错误
- 编译错误
第二题:
#include <iostream>
using namespace std;
int main() {
int n = 4;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n - i; j++) {
cout << " ";
}
for(int k = 1; k <= 2 * i - 1; k++) {
cout << "*";
}
cout << endl;
}
return 0;
}
1.判断题
(1)该程序输出一个由 * 组成的等腰三角形,共4行。( )
{{ select(26) }}
- 对
- 错
(2)如果将 n 改为5,则第一行会输出4个空格和1个 *。( )
{{ select(27) }}
- 对
- 错
(3)如果将内层循环 cout << " " 改为 cout << "#",则输出图形中的空格会变成 #。( )
{{ select(28) }}
- 对
- 错
2.选择题
(1)当 n = 3 时,输出图形的第三行是( )
{{ select(29) }}
(2)若将 k <= 2 * i - 1 改为 k <= i,则输出图形变为( )
{{ select(30) }}
- 每行星号个数与行号相同,左对齐
- 每行星号个数与行号相同,右对齐
- 每行星号个数为2倍行号减1,左对齐
- 每行星号个数为行号,且居中
第三题:
#include <iostream>
using namespace std;
int main() {
int x = 12345, sum = 0;
while(x > 0) {
sum = sum + x % 10;
x = x / 10;
}
cout << sum << endl;
return 0;
}
1.判断题
(1)程序输出为 15。( )
{{ select(31) }}
- 对
- 错
(2)若将 x 初始化为 0,则输出为 0。( )
{{ select(32) }}
- 对
- 错
(3)若将 while(x > 0) 改为 while(x != 0),执行结果相同。( )
{{ select(33) }}
- 对
- 错
2.选择题
(1)若输入 x = 100,则输出是( )
{{ select(34) }}
- 1
- 10
- 100
- 0
( 2)若将循环体中的 x = x / 10 删除,则( )
{{ select(35) }}
- 程序输出不变
- 程序进入死循环
- 程序输出为 0
- 编译错误
三、完善程序(共2题,每题5个空,每空3分,共30分)
(1)统计数字4的个数
题目描述 给定一个正整数 n,请统计 n 的十进制表示中,数字 4 出现的次数。 例如: 144 中数字 4 出现了 2 次; 123 中数字 4 出现了 0 次。 输入格式 一行,一个正整数n(1≤n≤108)。 输出格式 一行,一个整数,表示数字4出现的次数。 样例输入1: 144 样例输出1: 2 样例输入2: 123 样例输出2: 0 代码(请将下划线处填写正确的选项)
#include <iostream>
using namespace std;
int main() {
int n, cnt = 0;
cin >> n;
while ( ____(1)____ ) {
if ( ____(2)____ ) {
____(3)____;
}
____(4)____;
}
cout << ____(5)____;
return 0;
}
(1)循环继续的条件是( )
{{ select(36) }}
- n == 0
- n > 0
- n >= 0
- n < 0
(2)判断当前末位是否为 4( )
{{ select(37) }}
- n % 10 == 4
- n / 10 == 4
- n % 10 != 4
- n / 10 != 4
(3)发现数字 4 时增加计数( )
{{ select(38) }}
- cnt += n
- cnt += 1
- cnt = 1
- cnt++1
(4)去掉当前末位,继续检查下一位( )
{{ select(39) }}
- n %= 10
- n /= 10
- n -= 10
- n = n % 10
(5)输出计数结果( )
{{ select(40) }}
- n
- cnt
- n % 10
- cnt + 1
(2)幸运数字(包含恰好3个数字2)
题目描述 如果一个正整数在十进制表示中,数字2出现的次数恰好等于3,则称它为“幸运数字”。例如:222、1222、20222都是幸运数字;2、22、2222都不是。给定两个正整数L和R(1≤L≤R≤106),请统计区间[L,R]内幸运数字的个数。 输入格式 一行,两个正整数 L 和 R,中间用空格隔开。 输出格式 一行,一个整数,表示幸运数字的个数。 样例输入1: 1 1000 样例输出1:(解释:只有 222 符合条件) 1 样例输入2: 200 300 样例输出2:(解释:只有 222 符合条件) 1 代码(请将下划线处填写正确的选项)
#include <iostream>
using namespace std;
int main() {
int L, R, ans = 0;
cin >> L >> R;
for (int i = L; i <= R; i++) {
int t = i;
int cnt = 0;
while ( ____(1)____ ) {
if ( ____(2)____ ) {
____(3)____;
}
____(4)____;
}
if ( ____(5)____ ) {
ans++;
}
}
cout << ans;
return 0;
}
(1)循环继续检查每一位
{{ select(41) }}
- t == 0
- t > 0
- t >= 0
- t < 0
(2)判断当前末位是否为数字 2
{{ select(42) }}
- t % 10 == 2
- t / 10 == 2
- t % 10 != 2
- t / 10 != 2
(3)遇到数字 2 时增加计数
{{ select(43) }}
- cnt += t
- cnt += 1
- cnt = 2
- cnt += 2
(4)去掉当前末位
{{ select(44) }}
- t %= 10
- t /= 10
- t -= 10
- t = t % 10
(5)判断是否为幸运数字(数字2的个数恰好为3)
{{ select(45) }}
- cnt == 3
- cnt > 3
- cnt < 3
- cnt = 3