#GESP1351. [GESP202603二级] 客观题

[GESP202603二级] 客观题

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

第 1 题 20262026 年春节联欢晚会上一个武术表演节目《武 BOTBOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备 ( )

{{ select(1) }}

  • 检测重心的重力传感器
  • 预装的 AIAI 算法程序
  • 接收动作指令的遥控器
  • 拍摄其他机器人的摄像头

第 2 题 下面代码用来找出输入的 NN 个正整数中最大的一个。如果将代码段用流程图来表示,则 L1 标记的代码行应 该使用的图形是 ( )

01 int N, max=0, val;
02 cin >> N;
03 
04 while(N){
05     cin >> val;
06     if(val > max) // L1
07         max = val;
08     N--;
09 }
10
11 cout << max;

{{ select(2) }}

  • 圆形框
  • 椭圆形框
  • 平行四边形框
  • 菱形框

第 3 题 下面 C++ 代码可以执行,有关说法正确的是 ( )

01 double PI = 3.1415926;
02 cout << (PI);

{{ select(3) }}

  • 为了方便初学者,cout<(PI)cout<<(pi) 效果相同,即变量的大小写不敏感
  • cout<<(PI) 修改为 cout<<(Pi) 能正常执行
  • 不能用 PIPI 做变量名,因为要保存圆周率这个常量
  • 将程序中全部 PIPI 都改写为 PaiPai,将能正常执行,不会报错

第 4 题 下面选择项中,与 C++ 表达式 !(x>5 &&y<=10) 等价的是 ( )

{{ select(4) }}

  • x <= 5 && y > 10
  • x > 5 || y <= 10
  • x <= 5 || y > 10
  • !x > 5 && !y <= 10

第 5 题 某同学执行 C++ 代码cout<<((0.1+0.2)==0.3) 时输出 00,下面最可能的原因是 ( )

{{ select(5) }}

  • C+++ 运算符在处理小数时存在bug
  • 0.10.20.3 在计算机中无法用二进制浮点数精确表示,导致 0.1+0.2 的结果与 0.3 存在微小误差
  • == 运算符不能用于比较浮点数,只能用于整数
  • 因为 0.1+0.2 的数学结果不等于 0.3

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

01 tnt = 0;
02 for (int i = 0; i < 5; i++){
03     for (int j = 0; j < i; j++)
04         tnt += 1;
05     cout << tnt << "#";
06 }
07 cout << tnt;

{{ select(6) }}

  • 0#1#3#6#10#10
  • 1#2#3#4#5#6#7#8#9#10#10
  • 10#10
  • 10

第 7 题 下面的 C++ 代码执行之后的输出是 ( )

01 for ( int i = -2; i < 2; i++)
02     if (not i % 3)
03         cout << i << "#";

{{ select(7) }}

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

第 8 题 下面的 C++ 代码执行后其输出是 ( )

01 int cnt = 0, i, j;
02 for (i =1; i < 5; i++){
03     for (j =0; j < i; j++)
04         cout << j << "#";
05     break;
06 }
07 if(i >= 5)
08     cout << (i*j);

{{ select(8) }}

  • 0#0#1#0#1#2#0#1#2#3#12
  • 0#0#1#0#1#2#0#1#2#3#
  • 0#
  • 1#

第 9 题 下面 C++ 代码执行后其输出是 ( )

01 int count = 0;
02 for (int i = 1; i < 4; i++)
03     for (int j = 1; j < 5; j++){
04         if (j == 3)
05             continue;
06         if (i == 2)
07             break;
08         count += 1;
09     }
10 cout << (count);

{{ select(9) }}

  • 22
  • 44
  • 66
  • 88

第 10 题 下面 44 个选项中,与下面C++ 代码段具有相同效果的是 ( )

01 i = 0;
02 while (i < 5){
03     cout << i;
04     i += 1;
05 }

{{ select(10) }}

  • 01 for (i = 0; i < 5; i++)
    02     cout << i;
    
  • 01 for (i = 1; i < 5; i++)
    02     cout << i;
    
  • 01 for (i = 0; i < 6; i++)
    02     cout << i;
    
  • 01 for (i = 1; i < 6; i++)
    02 cout << i;
    

第 11 题 下面 C++ 代码执行后输出是 ( )

01 int n = 10;
02 while (n > 0){
03     n -= 1;
04     if (n % 3 == 0)
05         continue;
06     if (n == 5)
07         break;
08 }
09 cout << n;

{{ select(11) }}

  • 00
  • 55
  • 66
  • 77

第 12 题 下面 C++ 代码段执行后,其输出是 ( )

01 int i, j, cnt;
02 cnt = 0;
03 for (i = 0; i < 5; i++){
04     i = -i;
05     for (j = i; j < -i; j++)
06         cnt += 1;
07     i = -i;
08 }
09 cout << cnt;

{{ select(12) }}

  • 55
  • 1515
  • 2020
  • 3030

第 13 题 某学校图书馆的借阅卡号由 66 位整数组成。前 55 位是顺序编号,第66 位是校验码,用于防止输错。校验码规则如下:将前 55 位数字相加,然后除以 1010 的余数,就是第 66 位数字。如卡号123455123455 的前 55 位之和为 1515,除以1010 的余数是 55,故第 66 位为 55。下面的 C++ 代码段用于判断卡号是否正确,横线处应填入的代码是 ( )

01 cout << "请输入卡号:";
02 cin >> N;
03 order_num = N / 10; // 获得前5位顺序号,假设录入一定为6位正整数
04 check_num = N % 10; // 获得最后一位
05 
06 tnt = 0; // 保存前5位之和
07 for (i = 0; i < 5; i++){
08     ________________;
09     order_num /= 10;
10 }
11
12 if (__________________)
13     cout << "符合校验规则";
14 else
15     cout << "不符合校验规则";

{{ select(13) }}

  • 01 tnt += order_num / 10
    02 tnt / 10 == check_num
    
  • 01 tnt += order_num % 10
    02 tnt % 10 == check_num
    
  • 01 tnt = order_num / 10 + tnt
    02 tnt % 10 == check_num
    
  • 01 tnt = order_num % 10
    02 tnt / 10 == check_num
    

第 14 题 下面的 C++ 代码段正常执行后其输出的数字图形是 ( )

01 for (i = 1; i < 5; i++){
02     for (j = 1; j < i+1; j++)
03         cout << j;
04     cout << endl;
05 }

{{ select(14) }}

  • 1
    12
    123
    1234
    
  • 1
    22
    333
    4444
    
  • 1
    21
    321
    4321
    
  • 4
    34
    234
    1234
    

第 15 题 某学校举办“校园演讲比赛”,每位选手由 88 位评委打分(分数为 0100 \sim 10 的整数),且每位评委必须打分。计分规则:若至少有 55 位评委给出大于等于 66 分,则成绩有效,最终得分为所有 88 位评委的总分;如给出低于 66 分的评委数量超过 55 位,则记为 00 分。以下核心程序段依次输入 88 个分数,并计算最终得分。横线处应填入 ( )

01 total_score = 0; // 所有分数之和
02 high_count = 0;  // ≥6分的评委数量
03 
04 for (i = 0; i < 8; i++){
05     cout << "请输入评委分数: ";
06     cin >> score;
07     ____________________;
08     if (score >= 6)
09         ________________;
10 }
11 
12 if (high_count >= 5)
13     cout << total_score;
14 else
15     cout << 0;

{{ select(15) }}

  • 01 total_score += score
    02 high_count += 1
    
  • 01 total_score += score
    02 high_count += score
    
  • 01 high_count += 1
    02 total_score += score
    
  • 01 total_score *= score
    02 high_count *= 1
    

二、判断题(每题 2 分,共 20 分)

第 1 题 小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。

{{ select(16) }}

  • 正确
  • 错误

第 2 题 C++ 语句 cout<<('4’%'2'=='2'*'2'%2); 执行后的输出是 11

{{ select(17) }}

  • 正确
  • 错误

第 3 题 下面的 C++ 代码段执行时将报错,因为 1010 是整数类型,aa 是布尔类型。由于类型不同,不能进行加法运 算。

01 bool a = true;
02 cout << (10 + a);

{{ select(18) }}

  • 正确
  • 错误

第 4 题 下面 C++ 代码段执行后将输出 0-3-6-9-

01 for (int i = 0; i < 10; i++){
02     if (i % 3)
03         continue;
04     cout << i <<  "-";
05 }

{{ select(19) }}

  • 正确
  • 错误

第 5 题 执行下面的 C++ 代码段,如果 NN 是基本数据类型,则语句cout<<(N); 将被执行 00 次或无数次(即死循环)。

01 cin >> N;
02 while (N)
03     cout << (N);

{{ select(20) }}

  • 正确
  • 错误

第 6 题 下面的 C++ 代码段可正常执行,删除 continue 不影响执行效果。

01 for (i = 0; i < 10; i++){
02     i += 1;
03     continue;
04 }
05 cout << (i);

{{ select(21) }}

  • 正确
  • 错误

第 7 题 下面的 C++ 代码段用于计算 11NN 之间且包含 NN 的所有数字中含有的 33 的个数,如 114040 含有 141433,而 112020 则只含有 2233。如果将 while (i!= 0)改为 while(abs(i)),则执行结果相同。

01 cout << "请输入正整数N:";
02 cin >> N;
03 cnt = 0; // 保存3的个数
04 for  (k = 1; k < N + 1; k++){
05     i = k;
06     while (i != 0){
07         if (i % 10 == 3)
08             cnt += 1;
09         i /= 10;
10     }
11 }
12 cout << cnt;

{{ select(22) }}

  • 正确
  • 错误

第 8 题 下面的 C++ 代码段执行将不会有输出,因为内层循环 j 总是 00 开始,i*j%10 == 0 将会被满足,执行break,故而 i 小于 1010,不会满足if 判断条件。

01 for (i = 1; i < 10; i++)
02     for (j = 0; j < i; j++)
03         if (i * j % 10 == 0)
04             break;
05 if(i >= 10)
06     cout << (i*j);

{{ select(23) }}

  • 正确
  • 错误

第 9 题 下列 C++ 代码执行后将输出 1#4#9#16#16

01 cnt = 0;
02 for  (i = 1; i < 5; i++){
03     for (j = 1; j < i + 1; j++)
04         if (i * j % 10 == 0)
05             break;
06     if (j >= i + 1)
07         cout << (i * j) << "#";
08 }
09 if(i >= 5)
10     cout << (i * j);

{{ select(24) }}

  • 正确
  • 错误

第 10 题 下面 C++ 代码执行后输出如左图所示,将 "%d" 修改为 "%3d" 即可实现右图输出。

/*
  // 左图                         // 右图
 1 2 3 4 5 6 7 8 9               1   2   3   4   5   6   7   8   9
 2 4 6 8 10 12 14 16 18          2   4   6   8  10  12  14  16  18
 3 6 9 12 15 18 21 24 27         3   6   9  12  15  18  21  24  27
 4 8 12 16 20 24 28 32 36        4   8  12  16  20  24  28  32  36
 5 10 15 20 25 30 35 40 45       5  10  15  20  25  30  35  40  45
 6 12 18 24 30 36 42 48 54       6  12  18  24  30  36  42  48  54
 7 14 21 28 35 42 49 56 63       7  14  21  28  35  42  49  56  63
 8 16 24 32 40 48 56 64 72       8  16  24  32  40  48  56  64  72
 9 18 27 36 45 54 63 72 81       9  18  27  36  45  54  63  72  81
*/

01 for (i = 1; i < 10; i++){
02     for (j = 1; j < 10; j++)
03         printf(" %d", i*j);
04     printf("\n");
05 }

{{ select(25) }}

  • 正确
  • 错误