#1975. GESP 模拟测试(1-4 级综合) · 单选题

GESP 模拟测试(1-4 级综合) · 单选题

GESP 模拟测试(1-4 级综合)(120 分钟,总分 100 分)

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

1. 如下 C++ 代码执行时,下列说法正确的是( )。

int N, i;
cin >> N;
for (i = 2; i < N; i++)
    if (N % i == 0) {
        cout << "1#";
        break;
    } else
        cout << "0#";

{{ select(1) }}

  • 如果输入 2,将输出 1#。
  • 如果输入 15,将输出 0#1#。
  • 如果输入 1,将输出 0#。
  • 如果输入 3,将输出 1#。

2. 执⾏C++语句 cin >> a 时如果输⼊5+2,下述说法正确的是( )。

{{ select(2) }}

  • 变量a将被赋值为整数7
  • 变量a将被赋值为字符串,字符串内容为5+2
  • 语句执⾏将报错,不能输⼊表达式
  • 依赖于变量a的类型。如果没有定义,会有编译错误

3. 小明和弟弟在玩一个拼数字游戏,游戏规则是:二人各写一个两位正整数 M 和 N;然后将较大的数字放在较小的前面,拼成一个4位数;将这个4位数除以3的余数添加到4位数的后面,得到一个5位数;最后判断这个5位数能否被14整除。下面的C++代码用于判断 M 和 N 是否符合全部要求,如果符合则输出 Y 否则输出 N。例如输入 85 和 79,可以拼出 85792,恰好是14的倍数,则输出 Y。关于下面代码描述正确的是(  )。

int M, N, Q;
cin >> M >> N;
if(M > N)    // L1
   Q = M*100+N;
else
   Q = N*100+M;
if((Q*10+Q%3) % 14 == 0)    // L2
   cout << "Y";
else
   cout << "N";

{{ select(3) }}

  • 代码段不能完成正确判断
  • L1行代码中条件应该改为 M <= N
  • L2行代码应该改为 if ((Q*10+Q/3) % 14 == 0)
  • 代码段可以不使用变量 Q,而是在区分 M 和 N 大小后分别直接用它们来判断

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

int x = 10, y = 20;
x = x + y;
y = x - y;
x = x - y;
cout << x << ' ' << y;

{{ select(4) }}

  • 10 20
  • 20 10
  • 10 10
  • 20 20

5. 如下 C++ 代码执行时,下列说法错误的是(  )。

int N, tot;
cin >> N;
tot = 0;

while (N > 0) {
    cout << N << "#";
    tot += 1;
    N -= 1;
}

cout << tot << "-END";

{{ select(5) }}

  • 如果输入 3,输出是:3#2#1#3-END
  • 如果输入 -10,输出是:0-END
  • 如果输入 0,输出是:0-END
  • 如果输入 1,输出是:1#0-END

6. 2025年4月19日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用身上安装的多个传感器所反馈的数据来调整姿态、保持平衡等,那么这类传感器类似于计算机的( )。

{{ select(6) }}

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

7. 常量'3'的数据类型是( )。

{{ select(7) }}

  • double
  • float
  • char
  • int

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

{{ select(8) }}

  • 0
  • 4
  • 14
  • 50

9. 下面C++代码执行后输出是( )。

int i, cnt = 0;
for(i = -99; i < 100; i += 2)
    cnt = 1 + cnt;
cout << cnt;

{{ select(9) }}

  • 101
  • 100
  • 99
  • 98

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

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

{{ select(10) }}

  • 9
  • 10
  • 14
  • 20

11. 下面C++代码执行后其输出是( )。

for (i =1; i < 12; i++){
   if (i % 2 == 0)
       continue;
       
   for (j = 0; j < i; j++)
       if (i * j % 2)
           break;
}
if(i>= 12)
   cout << (i * j);

{{ select(11) }}

  • 110
  • 12
  • 不确定
  • 无输出

12. 关于字符串和字符数组,下列说法正确的是( )。

{{ select(12) }}

  • char str[] = "GESP";
    int len1 = sizeof(str);
    int len2 = strlen(str);
    上面程序能够正确执行,len1 与 len2 相等。
  • char str1[4] = "GESP";
    char str2[4] = {'G', 'E', 'S', 'P'};
    这段程序将能够正确执行。
  • char str2[4] = {'G', 'E', 'S', 'P'};
    strcpy(str2, "HELLO,GESP");
    cout << str2 << endl;
    这段程序即使能够运行,但是存在覆盖数组以外的内存空间的行为,可能会引起严重错误。
  • char dest[4] = {'G', 'E', 'S', 'P'};
    char src[] = "HELLO";
    strcat(dest, src);
    cout << dest << endl;
    这段程序能够正确执行,不存在数组越界行为。

13. 下面的程序是位掩码技术实现权限的组合管理。首先定义四个权限常量,分别对应读、写、修改、删除,每个权限占用整数的一个独立二进制位。初始化权限掩码 mask 为 0,代表没有任何权限。如果想实现如下的操作:添加读权限;添加写权限;清除读权限,其他位不变;添加删除权限。则横线处应该填入的是(  )。

#include <iostream>
using namespace std;

int main() {
    const int READ = 1 << 0;
    const int WRITE = 1 << 1;
    const int MODIFY = 1 << 2;
    const int DELETE_ = 1 << 3;
    int mask = 0;
    _________________________
    return 0;
}

{{ select(13) }}

  • mask = mask | READ;
    mask = mask | WRITE;
    mask = mask & (~READ);
    mask = mask | DELETE_;
  • mask = mask & READ;
    mask = mask & WRITE;
    mask = mask | (~READ);
    mask = mask & DELETE_;
  • mask = mask | READ;
    mask = mask & WRITE;
    mask = mask & (~READ);
    mask = mask | DELETE_;
  • mask = mask | READ;
    mask = mask | WRITE;
    mask = mask | (~READ);
    mask = mask | DELETE_;

14. 在8位二进制原码表示中,八进制数-5的二进制形式是什么( )

{{ select(14) }}

  • 10000101
  • 11111010
  • 11111011
  • 00000101

15. 数组{45,66,23, 1, 10,97,52,88,5,33}进⾏从⼩到⼤冒泡排序过程中 ,第⼀遍冒泡过后的序列是( )。

{{ select(15) }}

  • {45,23,1,10,66,52,88,5,33,97}
  • {45,66,1,23,10,97,52,88,5,33}
  • {45,66,23,1,10,52,88,5,33,97}
  • {45,66,23,1,10,97,52,88,33,5}