#1630. 信息素养大赛——小学组模拟卷 2

信息素养大赛——小学组模拟卷 2

信息素养大赛——小学组模拟卷 2

一、单选题(共20题,每题2分,共40分)

1 近日,空中客车公司表示,约 6000 架空客 A320 系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故分析后的结果显示,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的 ( )

{{ select(1) }}

  • 辐射传感器
  • 处理器
  • 内存单元
  • 输出设备

2 下面的 C++ 代码在某集成开发环境中编译运行时,提示有 “Invalid Character”(“无效字符”)错误。可能的原因是 ( )

int a, b; a=3,b = 4; // L1
cout << a; // L2
cout << b; // L3

{{ select(2) }}

  • L1 行代码中的逗号很可能是中文逗号,应该改为英文逗号。
  • L1 行应该分为两行,分别是 a=3 和 b=4。
  • 代码运行前没有保存到文件。
  • L2 和 L3 不能分为两行,应合并为一行。

3 下面有关 C++ 变量的说法,正确的是 ( )

{{ select(3) }}

  • 不可以用 for 作为变量名,因为 for 是 C++ 的关键字(保留字)。
  • _tnt 不可以是变量名,因为变量名的第一个字符必须是英文字母。
  • _tnt_不可以是变量名,因为最后一个字符容易与减号混淆。
  • 可以用 printf 作为变量名,因为 printf 是关键字,但这不是好习惯,因为 printf 有约定的功能与含义。

4 X是 C++ 的整型变量,则cout << (X=3, X++, ++X);执行后的输出是 ( )

{{ select(4) }}

  • 3
  • 4
  • 5
  • 不确定

5 C++ 表达式2 + 3 * 4 % 5的值为 ( )

{{ select(5) }}

  • 0
  • 4
  • 14
  • 50

6 下面的 C++ 代码执行后,其输出是 ( )

a = 3; b = a = 4; printf("%d %d", a, b);

{{ select(6) }}

  • 4 4
  • 3 3
  • 3 4
  • 4 3

7 下面 C++ 代码执行后输出是 ( )

int i;
for (i = 10; i < 100; i += 10){
    if (i % 10 == 0)
        continue;
    printf("%d#",i);
}
if(i >= 100)
    printf("%d END",i);

{{ select(7) }}

  • 10#20#30#40#50#60#70#80#90#100 END
  • 100#100 END
  • 100 END
  • 没有输出

8 两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的 C++ 代码用于实现该操作,横线处应该填写的代码是 ( )

int N,M;
cin >>N>>M;
while (N!=M){
    if(N>M)
        ________;
    else
        ________;
}
cout <<N;

{{ select(8) }}

  • N=N-M;M=M-N
  • M=M-N;N=N-M
  • M=N-M;N=M-N
  • N,M=M,N;M,N=N,M

9 如果一个正整数能被 3 整除,或者某一位能被 3 整除,则称之为 “漂亮数”。下面的 C++ 代码用于判断正整数 N 是否为漂亮数,L1 行的横线处应该填入的代码是 ( )

int N,Flag;
cin>>N;
Flag=0;//"非漂亮数"
if(N%3==0)
    Flag=1;//"漂亮数"
else
    while (N!=0){
        if(________) {//L1
            Flag=1;
            break;
        }
        N/=10;
    }
cout<<(Flag?"漂亮数":"非漂亮数");

{{ select(9) }}

  • N% 10==0
  • N%3%10==0
  • N%10%3
  • N%10%3==0

10 执行下面 C++ 代码可以找出千位与个位的和恰好等于中间两位的四位数,横线处应该填入 ( )

int count=0;
int a,bc,d,tmp;
for (int i=1000;i<=9999;i++) {
    a=(tmp=i)/1000;
    ________;
    bc=tmp/10;
    d=tmp-bc*10;
    if(a+d==bc) {
        count++;
    }
}
cout << count;

{{ select(10) }}

  • tmp=i/10;
  • tmp=i%100;
  • tmp-=a*1000;
  • tmp=i-i%1000;

11 小明最近为了备考 GESP,开始看 B 站上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,那他平时上学所在的教学楼内的网络是一个 ( )

{{ select(11) }}

  • PAN
  • LAN
  • MAN
  • WAN

12 一个小数是 ### 0123123123…… 无限循环,其小数点后 1 位是 1,后 2 位是 2,依此类推,求第 N 位的值。横线处应填入的代码是 ( )

int N;
cin >> N;
remainder = ________;
if (remainder == 0)
    cout << 1;
else if (remainder == 1)
    cout << 2;
else
    cout << 3;

{{ select(12) }}

  • N % 3
  • (N - 1) % 3
  • N / 3
  • (N - 1) / 3

13 某同学执行 C++ 代码时printf("%g\n", (3 + ### 31415926535));输出 ### 614159,其原因最可能是 ( )

{{ select(13) }}

  • C++ 中整数和浮点数相加时,整数会被转换为浮点数,而某些十进制小数无法精确表示为二进制小数,从而产生某些舍入误差。
  • C++ 的 printf 函数在输出浮点数时根据格式有默认小数点位数,因此输出了较少的位数。
  • 31415926535 是一个无限循环小数,在计算机中无法精确表示。

  • 由于计算机 CPU 的运算错误导致。

14 下面的 C++ 代码执行后的输出是 ( )

for (int i = -2; i < 2; i++)
    if (i % 2)
        printf("%d#",i);

{{ select(14) }}

  • -1#1#
  • -1#0#1#
  • -2#-1#1#
  • -2#-1#1#2#

15 与下面 C++ 输出效果不一致的代码是 ( )

int i;
for (i = 0; i < 10; i++)
cout << i;
int i = 0;
while (i < 10){
    cout << i;
    i += 1;
}
int i = 0;
while (i < 10){
    i += 1;
    cout << i;
}
int i = 0;
while (true){
    cout << i;
    i += 1;
    if (i >= 10)
        break;
}
int i = 0;
while (true){
    if (i >= 10)
        break;
    cout << i;
    i += 1;
}

{{ select(15) }}

  • 1
  • 2
  • 3
  • 4

16 下面 C++ 代码执行后输出是 ( )

int num = 0;
while (num <= 5){
    num += 1;
    if (num % 3)
        continue;
    printf("%d#",num);
}
if(num > 5)
    printf("%d", num);

{{ select(16) }}

  • 3#6#
  • 3#6#6
  • 1#2#3#4#5#6#
  • 1#2#3#4#5#6#6

17 下面 C++ 代码执行后,其输出是 ( )

int cnt = 0;
for (int i = 0; i <5; i++)
    for (int j =i; j < 4; j++)
        cnt += 1;
cout << cnt;

{{ select(17) }}

  • 9
  • 10
  • 14
  • 20

18 漂亮数的定义是:如果 N 能被 M 整除,或者某位是 M,或者 N 的每位数之和能被 M 整除,则说 N 是 M 的漂亮数。如果三个条件都满足,则是完整漂亮数。下面的代码用于判断 N 是否为 M 的完整漂亮数并输出。相关说法正确的是 ( )

int N, M, Flag, Sum, num;
cin >> N >> M;
Sum = 0;
Flag = 0;
while (N != 0){
    num = N % 10;
    Sum += num;
    if (num == M) Flag = 1;
    N /= 10;
}
if ((N % M == 0) && (Flag == 1) && (Sum % M == 0))
    printf("%d 是 %d 的完整漂亮数", N, M);
else
    printf("%d 不是 %d 的完整漂亮数", N, M);

{{ select(18) }}

  • 代码能完成题目设定目标
  • 在 while 前加 int old_num=N; 并将判断中 N 改为 old_num 可正确判定
  • while 中可加 else Flag=0;
  • 输入 0 和 3 一定输出 0 是 3 的完整漂亮数

19 阅读下面的 C++ 代码,执行后如输入 5,其输出的字符图形是 ( )

int n,i,j,k;
cin >> n;
for (i = 0; i < n; i++){
    for (j = 0; j < n-i-1; j++)
        cout << " ";
    for (k = 0; k < 2*i+1; k++)
        cout << "*";
    cout << endl;
}

{{ select(19) }}

  • 倒三角星号
  • 正三角星号
  • 矩形星号
  • 菱形星号

20 某学校举办 “十佳歌手大奖赛”,计分规则:去掉一个最高分、一个最低分,求剩余平均分。相关说法正确的是 ( )

float total_score, max_score, min_score, now_score;
for (int i = 0; i < 25; i++){
    max_score = 0; min_score = 10; total_score = 0;
    for (int j = 0; j < 10; j++){
        cin >> now_score;
        max_score = max(max_score, now_score);
        min_score = min(min_score, now_score);
        total_score += now_score;
    }
    cout << (total_score - max_score - min_score);
}

{{ select(20) }}

  • 程序总体逻辑错误,必须排序
  • 初始化三行应移到外层循环外
  • max/min 可改用 if 或三目运算符实现
  • total_score += now_score 不能改为 total_score=total_score+now_score

二、阅读程序(共3题,判断题2分/题+选择题3分/题,共30分)

第一题:

#include <iostream>
using namespace std;
int main() {
    int a = 5, b = 2;
    if (a > b && (b = a) > 0) {
        cout << a + b;
    } else {
        cout << a - b;
    }
    return 0;
}

1判断题

#####(1)程序执行过程中,b 的值会被修改为5。( ) {{ select(21) }}

  • 错 #####(2)由于 a > b 为真,&& 后面的 (b = a) 会被执行。( ) {{ select(22) }}
  • 错 #####(3)程序输出结果是10。( ) {{ select(23) }}

2选择题

#####(1)程序运行后输出的值是( ) {{ select(24) }}

  • 0

  • 5

  • 10

  • 3 #####(2)若将条件改为 a > b && (b = a + 1) > 0,则输出( ) {{ select(25) }}

  • 0

  • 5

  • 11

  • 10

第二题:


#include using namespace std; int main() { int x = 1, y = 1; for (int i = 1; i <= 3; i++) { for (int j = 1; j <= i; j++) { if ((i + j) % 2 == 0) { x += j; } else { y += i; } } } cout << x << "," << y; return 0; }

1判断题

#####(1)外层循环执行过程中,内层循环的循环次数依次为1、2、3。( ) {{ select(26) }}

  • 错 #####(2)当 i=2, j=2 时,条件 (i+j)%2==0 成立,执行 x += j。( ) {{ select(27) }}
  • 错 #####(3)程序运行结束后,y 的值为7。( ) {{ select(28) }}

2选择题

#####(1)程序运行后输出的结果是( ) {{ select(29) }}

  • 5,7

  • 6,6

  • 4,8

  • 7,5 #####(2)若将外层循环条件改为 i <= 4,则输出中 x 的值变为( ) {{ select(30) }}

  • 8

  • 9

  • 10

  • 11

第三题:

#include <iostream>
using namespace std;
int main() {
    int n = 9, cnt = 0;
    while (n > 0) {
        if (n % 3 == 0) {
            cnt++;
            n -= 3;
        } else if (n % 2 == 0) {
            cnt += 2;
            n -= 2;
        } else {
            cnt++;
            n--;
        }
    }
    cout << cnt;
    return 0;
}

1判断题

#####(1)程序循环中,当 n=9 时,进入第一个分支,执行后 n 变为6。( ) {{ select(31) }}

  • 错 #####(2)整个循环过程中,cnt 的值一共增加了5次。( ) {{ select(32) }}
  • 错 #####(3)循环结束后,n 的值为0。( ) {{ select(33) }}

2选择题

#####(1)程序运行后输出的值是( ) {{ select(34) }}

  • 5

  • 6

  • 7

  • 8 #####(2)若将 n % 3 == 0 改为 n % 3 == 1,且其他不变,则输出为( ) {{ select(35) }}

  • 5

  • 6

  • 7

  • 8

三、完善程序(共2题,每题5个空,每空3分,共30分)

(1)环保能量球

题目描述 小杨每行走1公里获得1点“环保能量”。此外,每行走 x 公里额外奖励1点能量。已知小杨共行走 n 公里,求总能量点数。 输入格式 第一行一个正整数 t,表示测试数据组数。 每组数据包含两行:第一行 n,第二行 x。 输出格式 每组数据输出一行一个整数,表示总能量。 样例输入: 2 5 2 10 3 样例输出: 7 13 代码(请将下划线处填写正确的选项)

#include <iostream>
using namespace std;
int main() {
    int t;
    cin >> t;
    while (__(1)__) {
        int n, x;
        cin >> n >> x;
        int ans = __(2)__;
        for (int i = 1; __(3)__; i++) {
            ans += 1;
            if (__(4)__) {
                ans += 1;
            }
        }
        cout << ans << endl;
    }
    __(5)__;
}

(1)

{{ select(36) }}

  • t--
  • t-- > 0
  • t++
  • t
(2)

{{ select(37) }}

  • 0
  • 1
  • n
  • x
(3)

{{ select(38) }}

  • i < n
  • i <= n
  • i == n
  • i > n
(4)

{{ select(39) }}

  • i % x == 0
  • i / x == 0
  • x % i == 0
  • i == x
(5)

{{ select(40) }}

  • return
  • return 0
  • return 1
  • return ;

(2)手机电量显示

题目描述 小杨的手机电量百分比为P。显示规则如下: ·若P≤10,显示大写字母R ·若10<P≤20,显示大写字母L·若P>20,直接显示数字P 输入多组数据,每组输出对应的显示信息。 输入格式 第一行一个正整数 T,表示数据组数。 接下来 T 行,每行一个正整数 P。 输出格式 对于每组数据,输出一行显示信息。 样例输入: 5 10 1 20 99 19 样例输出: R R L 99 L 代码(请将下划线处填写正确的选项)

#include <iostream>
using namespace std;
int main() {
    int T;
    cin >> __(1)__;
    for (int i = 0; i < T; __(2)__) {
        int P;
        cin >> P;
        if (__(3)__) {
            cout << "R" << endl;
        } else if (__(4)__) {
            cout << "L" << endl;
        } else {
            cout << __(5)__ << endl;
        }
    }
    return 0;
}
(1)

{{ select(41) }}

  • T
  • &T
  • "T"
  • T,
(2)

{{ select(42) }}

  • i++
  • i += 1
  • i = i + 1
  • 以上都对
(3)

{{ select(43) }}

  • P < 10
  • P <= 10
  • P > 10
  • P == 10
(4)

{{ select(44) }}

  • P <= 20
  • P < 20
  • P > 20
  • P <= 20 && P > 10
(5)

{{ select(45) }}

  • "R"
  • "L"
  • P
  • 'P'