A. C++高级组客观题

    客观题

C++高级组客观题

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

一、单选题(共 25 题)

  1. 以下案例中适合用枚举算法的是哪一项(   ) {{ select(1) }}
  • 10位同学需要按照身高由小到大排序
  • 有无穷多个数字,找出里面的质数
  • 有一筐苹果,为所有苹果贴标签
  • 35人的班级里,找出身高在120cm以上的同学
  1. 针对下方代码说法错误的是( )
#include<bits/stdc++.h>
using namespace std;
int main() {
	int n;
	cin >> n;
	for (int i = 2; i < n; i++)
		if (n % i == 0) {
			cout << "no";
			return 0;
		}
	cout << "yes";
	return 0;
}

{{ select(2) }}

  • 上方代码使用了枚举法,枚举范围是:2到n-1
  • 如果输入数据是8,上方代码的输出结果是no
  • 如果输入数据是7,上方代码的输出结果是yes
  • 如果2到n-1之间存在某个整数是n的因数,那么代码的输出结果是yes
  1. 篮子里有许多桃子,假设将其中的一半多1个给第一名同学,将余下的一半多2个给第二名同学,以此类推...,给完第5名同学刚好一个也不剩。篮子最初有几个桃子?(       ) {{ select(3) }}
  • 128
  • 129
  • 258
  • 518
  1. 平面上如果有一条直线,可以将平面分成2部分,六条直线最多可以把平面分成几部分?(       ) {{ select(4) }}
  • 16
  • 22
  • 29
  • 37
  1. 数组a对应存在前缀和数组s,用前缀和算法计算[2~4]的区间和。
      ┌────┬────┬────┬─────┬─────┐
  a[] │  0 │  2 │  9 │  5  │  11 │ 
      └────┴────┴────┴─────┴─────┘
         0    1    2    3     4
      ┌────┬────┬────┬─────┬─────┐
  s[] │  0 │  2 │ 11 │ 16  │  27 │
      └────┴────┴────┴─────┴─────┘
         0    1    2    3     4

{{ select(5) }}

  • a[4]-a[1]
  • s[4]-s[1]
  • a[3]-a[2]
  • s[3]-s[2]
  1. 数组a对应存在前缀和数组s,用前缀和算法计算[1~4]的区间和。
      ┌────┬────┬────┬─────┬─────┐
  a[] │  0 │  2 │  9 │  5  │  11 │ 
      └────┴────┴────┴─────┴─────┘
         0    1    2    3     4
      ┌────┬────┬────┬─────┬─────┐
  s[] │  0 │  2 │ 11 │ 16  │  27 │
      └────┴────┴────┴─────┴─────┘
         0    1    2    3     4

{{ select(6) }}

  • a[4]-a[0]
  • s[3]-s[1]
  • a[3]-a[1]
  • s[4]-s[0]
  1. 已经存在下面的数组,计算从下标1到下标4的差分数值。
      ┌────┬────┬────┬─────┬─────┐
  a[] │  0 │  2 │  9 │  20 │  65 │
      └────┴────┴────┴─────┴─────┘
         0    1    2    3     4

{{ select(7) }}

  • 2,11,31,96
  • -7,-11,-45,65
  • 2,7,11,45
  • 2,7,-11,-45
  1. 使用二分算法,在1~500之间猜数字77,依次取出的中间值是( ) {{ select(8) }}
  • 250,125,187,218,77
  • 251,125,63,94,77
  • 250,125,62,93,77
  • 125,63,94,77
  1. 观察下方数字序列,第一次二分处理时中间值mid为5,要找的数字为8,L、R的值要如何变化(    )
L                               R
1   2   3   4   5   6   7   8   9
                ↑
             ┌─────┐
             │ mid │
             └─────┘

{{ select(9) }}

  • R=mid+1
  • R=mid-1
  • L=mid+1
  • L=mid-1
  1. 有数字序列:1 2 5 12 25,用二分法查找数字12,至少需要比较几次(     ) {{ select(10) }}
  • 1
  • 2
  • 3
  • 4
  1. 在大整数乘法中,两个大整数最多各有500位,请问保存结果的数组最少定义多大?(      ) {{ select(11) }}
  • 500
  • 700
  • 1000
  • 2000
  1. 已知栈如下图,栈顶元素是什么(      )
╭──────────────────────────────
│  (3)    (9)    (2)    (6)       
╰──────────────────────────────

{{ select(12) }}

  • 3
  • 9
  • 2
  • 6
  1. 今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进行:进栈,进栈,出栈,进栈,进栈,出栈的操作,则此操作完成后,栈底元素为(      ) {{ select(13) }}
  • b
  • a
  • d
  • c
  1. 对于入栈顺序为a,b,c,d,e 的序列,下列(      )不是合法的出栈序列。 {{ select(14) }}
  • a,b,c,d,e
  • e,d,c,b,a
  • b,a,c,d,e
  • c,d,a,e,b
  1. 对于入栈顺序为a,b,c,d,e,f,g的序列,下列(      )不可能是合法的出栈序列。 {{ select(15) }}
  • a,b,c,d,e,f,g
  • a,d,c,b,e,g,f
  • a,d,b,c,g,f,e
  • g,f,e,d,c,b,a
  1. 有一个空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进行进栈、进栈、出栈,进栈,进栈,出栈的操作,则此操作完成后,栈S的栈顶元素为(     ) {{ select(16) }}
  • f
  • c
  • a
  • b
  1. 已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是(    )。 {{ select(17) }}
  • 5
  • 41
  • 77
  • 13
  1. 在一个初始为空的队列中,先依次插入元素a,b,c,d,然后做了两次删除操作,问:此时队首元素是(      ) {{ select(18) }}
  • a
  • b
  • c
  • d
  1. 如果进队的顺序为:a,b,c,d,则出队的顺序是(      ) {{ select(19) }}
  • b, c, d, a
  • a,b, c, d
  • a, c, b, d
  • c, b, d, a
  1. 看程序选择可填入横线的正确选项(     ) 输入一个3位数,将数字每一位顺序反转。
#include<bits/stdc++.h>
using namespace std;
int main(){
	int num=0;
	int a=0, b=0,c=0;
	int *p1=&a,*p2=&b,*p3=&c;
	cin>>num;
	*p1=__________;
	*p2=__________;
	*p3=__________;
	cout<<*p3<<*p2<<*p1;
	return 0;
}

{{ select(20) }}

  • num/100;
    num/10%10;
    num%10;
    
  • num/10;
    num/100;
    num%10;
    
  • num%10;
    nun/10%10;
    num/100;
    
  • num%100
    num/10%10
    num%10
    
  1. 和二进制数101100相等的十进制整数是(     )。 {{ select(21) }}
  • 44
  • 45
  • 64
  • 88
  1. 一个 int 类型的值乘以 8,等价于以下哪个位运算?(  ) {{ select(22) }}
  • 左移3位
  • 右移3位
  • 左移8位
  • 右移8位
  1. 有一数字序列,进行快速排序,当完成基准值为5的排序时 ,请选择符合要求的序列顺序( ) {{ select(23) }}
  • 1 2 6 5 9 3
  • 2 5 3 6 1 9
  • 1 3 2 5 9 6
  • 3 6 5 2 9 1
  1. 以下属于快速排序的是哪一项( ) {{ select(24) }}
  • 相邻元素两两交换
  • 从待排序列中每次选出最小
  • 确定基准值,小于等于基准值的放左侧,大于等于基准值的放右侧
  • 选择任意元素插入有序序列中
  1. 有波兰表达式:- + 3 * 4 2 * 1 5,从下列选项中选出表达式的正确结果( )。 {{ select(25) }}
  • 5
  • 6
  • 15
  • 16

二、判断题(共 10 题)

  1. 32>>3的结果是4。 {{ select(26) }}
  • 正确
  • 错误
  1. 冒泡排序对数组进行升序排序时,每一轮都能确定一个最大值排在末尾。 {{ select(27) }}
  • 正确
  • 错误
  1. 二分查找算法要求待查找的数组必须是有序的。 {{ select(28) }}
  • 正确
  • 错误
  1. 栈具有先进先出的特性,队列具有先进后出的特性。 {{ select(29) }}
  • 正确
  • 错误
  1. 常数级复杂度 O(1) 代表算法运行时间和数据规模无关 {{ select(30) }}
  • 正确
  • 错误
  1. 二分查找只能用于整数类型数据查找。 {{ select(31) }}
  • 正确
  • 错误
  1. 排序算法中,稳定排序不会改变相同数值元素的相对顺序。 {{ select(32) }}
  • 正确
  • 错误
  1. 无序数组也能使用二分查找提高查找效率。 {{ select(33) }}
  • 正确
  • 错误
  1. 一维前缀和数组 s[i] 表示原数组前 i 项的累加和. {{ select(34) }}
  • 正确
  • 错误
  1. 差分数组的核心作用是:对区间快速加减、最后还原原数组。 {{ select(35) }}
  • 正确
  • 错误

C++高级组(2026.5科技节)

未参加
状态
已结束
规则
OI
题目
3
开始于
2026-5-22 16:15
结束于
2026-5-26 20:15
持续时间
100 小时
主持人
参赛人数
19