A. C++ 高级组科技节模拟题

    客观题

C++ 高级组科技节模拟题

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

一、单选题(共 25 题)

  1. 以下案例中适合用枚举算法的是哪一项( ) {{ select(1) }}
  • 将全校10000名学生的成绩单按分数从高到低排列
  • 从无限多个偶数中找出所有能被3整除的数
  • 图书馆有500本书,找出其中出版年份在2010年之前的所有图书
  • 为超市里每一种商品拍摄宣传照片
  1. 针对下方代码说法错误的是( )
#include<bits/stdc++.h>
using namespace std;
int main() {
	int n;
	cin >> n;
	for (int i = 2; i <= n / 2; i++)
		if (n % i == 0) {
			cout << "composite";
			return 0;
		}
	cout << "prime";
	return 0;
}

{{ select(2) }}

  • 上方代码使用了枚举法,枚举范围是:2到n/2
  • 如果输入数据是9,上方代码的输出结果是composite
  • 如果输入数据是2,上方代码的输出结果是prime
  • 如果2到n/2之间存在某个整数是n的因数,那么代码的输出结果是prime
  1. 一筐橙子,给第1名同学总数的一半多1个,给第2名同学余下的一半多2个,给第3名同学余下的一半多3个,给第4名同学余下的一半多4个,刚好全部分完。篮子最初有几个橙子?( ) {{ select(3) }}
  • 46
  • 94
  • 98
  • 110
  1. 平面上如果有1条直线,可以将平面分成2部分,那么7条直线最多可以把平面分成几部分?( ) {{ select(4) }}
  • 22
  • 29
  • 37
  • 44
  1. 已知数组a及其前缀和数组s如下,用前缀和算法计算区间[2~4]的和。( )
      ┌────┬────┬────┬────┬────┐
  a[] │  0 │  4 │  6 │  3 │  8 │ 
      └────┴────┴────┴────┴────┘
         0    1    2    3    4
      ┌────┬────┬────┬────┬────┐
  s[] │  0 │  4 │ 10 │ 13 │ 21 │
      └────┴────┴────┴────┴────┘
         0    1    2    3    4

{{ select(5) }}

  • s[4]-s[1]
  • a[4]-a[1]
  • s[3]-s[2]
  • a[3]+a[4]
  1. 已知数组a及其前缀和数组s如下,用前缀和算法计算区间[1~3]的和。( )
      ┌────┬────┬────┬────┬────┐
  a[] │  0 │  5 │  3 │  7 │  2 │ 
      └────┴────┴────┴────┴────┘
         0    1    2    3    4
      ┌────┬────┬────┬────┬────┐
  s[] │  0 │  5 │  8 │ 15 │ 17 │
      └────┴────┴────┴────┴────┘
         0    1    2    3    4

{{ select(6) }}

  • s[3]-s[0]
  • s[3]-s[1]
  • a[3]-a[1]
  • s[2]-s[0]
  1. 已经存在下面的数组,请计算其差分数组(从下标1到下标4)。( )
      ┌────┬────┬────┬────┬────┐
  a[] │  0 │  5 │ 12 │ 15 │ 31 │
      └────┴────┴────┴────┴────┘
         0    1    2    3    4

{{ select(7) }}

  • 5,7,3,16
  • 5,12,15,31
  • -7,-3,-16,31
  • 5,7,-3,16
  1. 使用二分算法,在1~100之间猜数字73,依次取出的中间值是( ) {{ select(8) }}
  • 50,75,62,68,71,73
  • 50,25,37,80,73
  • 50,75,80,70,73
  • 50,75,62,80,73
  1. 观察下方数字序列,第一次二分处理时中间值mid为10,要找的数字为14,L、R的值应如何变化( )
L                               R
2   4   6   8  10  12  14  16  18
                ↑
             ┌─────┐
             │ mid │
             └─────┘

{{ select(9) }}

  • L=mid+1
  • R=mid-1
  • L=mid-1
  • R=mid+1
  1. 有数字序列:4 9 14 19 24 29 34 39,用二分法查找数字34,至少需要比较几次( ) {{ select(10) }}
  • 1
  • 2
  • 3
  • 4
  1. 在大整数乘法中,两个大整数最多各有400位,请问保存结果的数组最少定义多大?( ) {{ select(11) }}
  • 400
  • 401
  • 800
  • 1600
  1. 已知栈S中从栈底到栈顶依次存放的元素为:7, 14, 3, 9,栈顶元素是什么( ) {{ select(12) }}
  • 7
  • 14
  • 3
  • 9
  1. 今有一空栈S,对下列待进栈的数据元素序列p,q,r,s,t依次进行:进栈,进栈,出栈,进栈,进栈,出栈的操作,则此操作完成后,栈底元素为( ) {{ select(13) }}
  • p
  • q
  • r
  • s
  1. 对于入栈顺序为1,2,3,4,5的序列,下列( )不是合法的出栈序列。 {{ select(14) }}
  • 1,2,3,4,5
  • 5,4,3,2,1
  • 2,1,3,4,5
  • 3,4,1,2,5
  1. 对于入栈顺序为1,2,3,4,5,6,7的序列,下列( )不可能是合法的出栈序列。 {{ select(15) }}
  • 1,2,3,4,5,6,7
  • 1,4,3,2,6,7,5
  • 1,4,2,3,7,6,5
  • 7,6,5,4,3,2,1
  1. 有一个空栈S,对下列待进栈的数据元素序列m,n,o,p,q,r依次进行进栈、进栈、出栈,进栈、进栈、出栈的操作,则此操作完成后,栈S的栈顶元素为( ) {{ select(16) }}
  • m
  • n
  • o
  • p
  1. 已知队列(8,3,15,6,22,9,31,2),第一个进入队列的元素是8,则第五个出队列的元素是( )。 {{ select(17) }}
  • 6
  • 22
  • 9
  • 31
  1. 在一个初始为空的队列中,先依次插入元素5,8,2,9,然后做了两次删除操作,问:此时队首元素是( ) {{ select(18) }}
  • 5
  • 8
  • 2
  • 9
  1. 如果进队的顺序为:x,y,z,w,则出队的顺序是( ) {{ select(19) }}
  • y,z,w,x
  • x,y,z,w
  • x,z,y,w
  • z,y,w,x
  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;
    num/10%10;
    num/100;
    
  • num%100;
    num/10%10;
    num%10;
    
  1. 和二进制数110101相等的十进制整数是( )。 {{ select(21) }}
  • 52
  • 53
  • 54
  • 61
  1. 一个 int 类型的值除以 4,等价于以下哪个位运算?( ) {{ select(22) }}
  • 左移2位
  • 右移2位
  • 左移4位
  • 右移4位
  1. 有一数字序列,进行快速排序,当完成基准值为5的排序时,请选择符合要求的序列顺序( ) {{ select(23) }}
  • 1 3 8 5 7 9
  • 1 5 3 9 7 2
  • 3 1 2 5 9 7
  • 1 3 5 2 7 9
  1. 以下属于快速排序核心思想的是哪一项( ) {{ select(24) }}
  • 相邻元素两两比较并交换位置
  • 从待排序列中每次选出最小的元素放到前面
  • 选定基准元素,将数据分为小于基准和大于基准的两部分
  • 将每个元素逐个插入到已排好序的序列中
  1. 有波兰表达式:+ * 3 4 - 9 5,从下列选项中选出表达式的正确结果( )。 {{ select(25) }}
  • 12
  • 16
  • 20
  • 24

二、判断题(共 10 题)

  1. 64>>2的结果是16。 {{ 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] 存储的是原数组从第1个元素到第i个元素的累加和。 {{ select(34) }}
  • 正确
  • 错误
  1. 差分数组主要用于对某个区间内的所有值进行快速增减,再通过求前缀和恢复出原数组。 {{ select(35) }}
  • 正确
  • 错误

高级组模拟题

未参加
状态
已结束
规则
OI
题目
3
开始于
2026-5-10 8:00
结束于
2026-5-10 18:00
持续时间
1000 小时
主持人
参赛人数
22