#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