#GESP202606C2T1. 单选题(每题 2 分,共 30 分)

单选题(每题 2 分,共 30 分)

  1.  \ 学校组织到未来农场参观,小明听讲解员介绍,在智能温室中,湿度传感器可以连续检测土壤的湿度变化,并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿度传感器所发挥的作用,类似于计算机系统中的哪一类组件?( )

{{ select(1) }}

  • 处理器
  • 存储器
  • 输入设备
  • 输出设备

  1.  \ 小明去农场参观回来后就在自己的电脑上安装了一个 3D 农场仿真模拟系统,因为他今年买的二手电脑有点老旧,系统运行时经常弹出“系统内存不足”的警告,导致系统卡顿严重。他计划通过增加物理内存来解决问题。请问他应该购买以下哪种硬件组件?( )

{{ select(2) }}

  • 机械硬盘
  • 内存条
  • 图形显卡
  • 移动硬盘

  1.  \ 有关如下 C++ 代码的说法,正确的是( )。
float a = 3 + 3.5;
cout << a;

{{ select(3) }}

  • 代码执行将报错。如果将 a = 3 + 3.5 改为 a = float(3) + 3.5 将能正常执行。
  • 代码执行将报错。如果将 a = 3 + 3.5 改为 a = 3.0 + 3.5 将能正常执行。
  • 代码能正常执行,将输出 66
  • 代码能正常执行,将输出 6.56.5

  1.  \ 下面选择项中,与 C++ 表达式 not (x > 5 or y <= 10) 等价的是( )。

{{ select(4) }}

  • x <= 5 or y > 10
  • x > 5 and y <= 10
  • x <= 5 and y > 10
  • not x > 5 and not y <= 10

  1.  \ 小明在某开发环境中执行 C++ 代码 cout << (2.5 + 2.25) << ' ' << (2.2 + 2.1) 时输出 4.754.75 4.3000000000000014.300000000000001,其原因最可能是( )。

{{ select(5) }}

  • C++ 的 + 运算符在处理浮点数时有时正确,有时错误
  • 某些浮点数难以精确表示,导致微小误差
  • + 运算符不能用于浮点数,只能用于整数
  • 因为 cout 函数难以输出太长的数值

  1.  \ 执行如下 C++ 程序后,当输入 44 时,输出的最后一行是( )。
int n;
cin >> n;
for (int i = n; i > 0; i--) {
    for (int j = 0; j < i; j++)
        cout << j + 1 << ' ';
    cout << endl;
}

{{ select(6) }}

  • 00
  • 11
  • 11 22
  • 11 22 33 44

  1.  \ 下面的 C++ 代码执行后其输出是( )。
int tnt = 0;
for (int i = 1; i < 5; i += 3) {
    for (int j = 0; j < i; j++)
        tnt += 1;
    cout << tnt << "#";
}
cout << tnt;

{{ select(7) }}

  • 1#5#5
  • 1#5#5#
  • 1#5#12#12
  • 00

  1.  \ 下面的 C++ 代码执行之后的输出是( )。
int i;
for (i = -2; i < 2; i++)
    if (not i % 3 == 0)
        cout << i << "#";
cout << i;

{{ select(8) }}

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

  1.  \ 下面的 C++ 代码执行后其输出是( )。
int cnt = 0, i, j;
for (i = 0; i < 3; i++) {
    j = i;
    while (j) {
        cnt += 1;
        j -= 1;
    }
}
cout << i << ' ' << j << ' ' << cnt;

{{ select(9) }}

  • 33 00 33
  • 22 00 44
  • 22 00 55
  • 33 00 55

  1.  \ 下面 C++ 代码执行后其输出是( )。
int count = 0, i, j;
for (i = 1; i < 4; i++)
    for (j = 0; j < i; j++) {
        if (j % 3 != 0)
            continue;
        count += 1;
        break;
    }
cout << i << ' ' << j << ' ' << count;

{{ select(10) }}

  • 44 00 44
  • 33 00 00
  • 33 22 00
  • 44 00 33

  1.  \ 如下 C++ 代码执行后输出是 11 22 33 44 55 66 77 88 99 1010 1111 55 66 77 88 99 1010 1111 55 66 77 88 99 1010 1111 55 66 77 88 99 1010 1111 55 66 77。横线处应该填入的运算符是( )。
int num = 1;
for (int i = 0; i < 35; i++) {
    cout << num << " ";
    if (num _______ 10)
        num _______ 2;
    else
        num _______ 1;
}

{{ select(11) }}

  • > /= +=
  • >= %= +=
  • > /= =+
  • >= %= =+

  1.  \ 如下数字图形在通过执行后续的 C++ 代码时,输入 1010 来输出。横线处应填入的代码是( )。

11 11 11 11 11 11 11 11 11 11
11 11 00 00 00 00 00 00 00 11
11 00 11 00 00 00 00 00 00 11
11 00 00 11 00 00 00 00 00 11
11 00 00 00 11 00 00 00 00 11
11 00 00 00 00 11 00 00 00 11
11 00 00 00 00 00 11 00 00 11
11 00 00 00 00 00 00 11 00 11
11 00 00 00 00 00 00 00 11 11
11 11 11 11 11 11 11 11 11 11

int N;
cin >> N;
for (int i = 1; i < N + 1; i++) {
    for (int j = 1; j < N + 1; j++)
        if (________)
            cout << "1 ";
        else
            cout << "0 ";
    cout << endl;
}

{{ select(12) }}

  • i == j and i == 1 and j == 1 and i == N and j == N
  • i == j or i == 1 or j == 1 or i == N or j == N
  • i == j or i == 0 or j == 0 or i == (N + 1) or j == (N + 1)
  • i == j and i == 1 and j == 1 and i == (N + 1) and j == (N + 1)

  1.  \ 英文 corner case 通常翻译为极端案例或边角案例,通常指正常范围以外的问题或者情形。在如下 C++ 代码中,变量都是整型,则 corner case 最应该是( )。
int tnt = 0, cnt = 0;
while (1) {
    int score;
    cin >> score;
    if (score == -1)
        break;
    tnt += score;
    cnt += 1;
}
cout << tnt / cnt;

{{ select(13) }}

  • tnt = 0, cnt = 0 是 corner case,应分为两行
  • while(1) 是 corner case,因为 while(1) 将会导致死循环
  • cin >> score 是 corner case,因为输入数据前应该提示整型数据
  • cout << tnt / cnt 是 corner case,因为如果直接输入 1-1,将导致执行错误,虽然这种情况较为罕见

  1.  \ 如下 C++ 代码执行后,输入 44 后,输出的数字图形是( )。
int n;
cin >> n;
for (int i = n; i > 0; i--) {
    for (int j = 0; j < n - i; j++)
        cout << "0 ";
    for (int k = 0; k < i; k++)
        cout << k + 1 << " ";
    cout << endl;
}

A.

1 2 3 4
1 2 3 0
1 2 0 0
1 0 0 0

B.

1 2 3 4
0 1 2 3
0 0 1 2
0 0 0 1

C.

1 2 3 4
2 3 4 0
3 4 0 0
4 0 0 0

D.

0 0 0 1
0 0 1 2
0 1 2 3
1 2 3 4

{{ select(14) }}

  • A
  • B
  • C
  • D

  1.  \ 某学校举办“校园演讲比赛”,每位选手由 88 位评委打分(分数为 01000 \sim 100 的整数),且每位评委必须打分。计分规则:去掉一个最高分,去掉一个最低分。如下程序通过键盘先输入选手编号,然后依次输入 88 个分数,并计算最终得分。下列说法正确的是( )。
for (int i = 0; i < 10; i++) {
    int id, score;
    printf("输入选手编号: ");
    scanf("%d", &id);
    int max_score = 0, min_score = 100; // 最高分和最低分
    int total_score = 0; // 总分
    for (int j = 1; j < 9; j++) {
        printf("输入选手第%d个成绩:", j);
        scanf("%d", &score);
        if (max_score < score)
            max_score = score;
        if (min_score > score)
            min_score = score;
        total_score += score;
    }
    total_score = total_score - max_score - min_score;
    printf("%d号选手的成绩:\
            去掉一个最高分%d,\
            去掉一个最低分%d,\
            最后成绩是:%d", id, max_score, min_score, total_score);
}

{{ select(15) }}

  • 上述代码能完成题目要求
  • max_score = 0, min_score = 100 应修改为 max_score = 0, min_score = 0
  • max_score < scoremin_score > score 必须相应修改为 <=>=
  • total_score = total_score - max_score - min_score 不能达到预期,可修改如下:int total = total_score - max_score - min_score; total_score = total;