C++ 高级组科技节模拟题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
一、单选题(共 25 题)
- 以下案例中适合用枚举算法的是哪一项( ) {{ select(1) }}
- 将全校10000名学生的成绩单按分数从高到低排列
- 从无限多个偶数中找出所有能被3整除的数
- 图书馆有500本书,找出其中出版年份在2010年之前的所有图书
- 为超市里每一种商品拍摄宣传照片
- 针对下方代码说法错误的是( )
#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个,给第2名同学余下的一半多2个,给第3名同学余下的一半多3个,给第4名同学余下的一半多4个,刚好全部分完。篮子最初有几个橙子?( ) {{ select(3) }}
- 46
- 94
- 98
- 110
- 平面上如果有1条直线,可以将平面分成2部分,那么7条直线最多可以把平面分成几部分?( ) {{ select(4) }}
- 22
- 29
- 37
- 44
- 已知数组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]
- 已知数组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到下标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~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
- 观察下方数字序列,第一次二分处理时中间值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
- 有数字序列:4 9 14 19 24 29 34 39,用二分法查找数字34,至少需要比较几次( ) {{ select(10) }}
- 1
- 2
- 3
- 4
- 在大整数乘法中,两个大整数最多各有400位,请问保存结果的数组最少定义多大?( ) {{ select(11) }}
- 400
- 401
- 800
- 1600
- 已知栈S中从栈底到栈顶依次存放的元素为:7, 14, 3, 9,栈顶元素是什么( ) {{ select(12) }}
- 7
- 14
- 3
- 9
- 今有一空栈S,对下列待进栈的数据元素序列p,q,r,s,t依次进行:进栈,进栈,出栈,进栈,进栈,出栈的操作,则此操作完成后,栈底元素为( ) {{ select(13) }}
- p
- q
- r
- s
- 对于入栈顺序为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,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
- 有一个空栈S,对下列待进栈的数据元素序列m,n,o,p,q,r依次进行进栈、进栈、出栈,进栈、进栈、出栈的操作,则此操作完成后,栈S的栈顶元素为( ) {{ select(16) }}
- m
- n
- o
- p
- 已知队列(8,3,15,6,22,9,31,2),第一个进入队列的元素是8,则第五个出队列的元素是( )。 {{ select(17) }}
- 6
- 22
- 9
- 31
- 在一个初始为空的队列中,先依次插入元素5,8,2,9,然后做了两次删除操作,问:此时队首元素是( ) {{ select(18) }}
- 5
- 8
- 2
- 9
- 如果进队的顺序为:x,y,z,w,则出队的顺序是( ) {{ select(19) }}
- y,z,w,x
- x,y,z,w
- x,z,y,w
- z,y,w,x
- 看程序选择可填入横线的正确选项( ) 输入一个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;
- 和二进制数110101相等的十进制整数是( )。 {{ select(21) }}
- 52
- 53
- 54
- 61
- 一个 int 类型的值除以 4,等价于以下哪个位运算?( ) {{ select(22) }}
- 左移2位
- 右移2位
- 左移4位
- 右移4位
- 有一数字序列,进行快速排序,当完成基准值为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
- 以下属于快速排序核心思想的是哪一项( ) {{ select(24) }}
- 相邻元素两两比较并交换位置
- 从待排序列中每次选出最小的元素放到前面
- 选定基准元素,将数据分为小于基准和大于基准的两部分
- 将每个元素逐个插入到已排好序的序列中
- 有波兰表达式:+ * 3 4 - 9 5,从下列选项中选出表达式的正确结果( )。 {{ select(25) }}
- 12
- 16
- 20
- 24
二、判断题(共 10 题)
- 64>>2的结果是16。 {{ select(26) }}
- 正确
- 错误
- 冒泡排序对数组进行降序排序时,每一轮都能确定一个最大值排在开头。 {{ select(27) }}
- 正确
- 错误
- 二分查找算法只能在数据已经有序的情况下才能正确工作。 {{ select(28) }}
- 正确
- 错误
- 队列具有后进先出的特性,栈具有先进先出的特性。 {{ select(29) }}
- 正确
- 错误
- 时间复杂度 O(1) 意味着算法的执行时间不随输入数据量的变化而变化。 {{ select(30) }}
- 正确
- 错误
- 二分查找法仅适用于整数类型的数据,不能用于浮点数或字符串。 {{ select(31) }}
- 正确
- 错误
- 稳定排序会保持数值相同的元素在排序前后的先后次序不变。 {{ select(32) }}
- 正确
- 错误
- 对于未排序的数组,也可以通过二分查找来加快搜索速度。 {{ select(33) }}
- 正确
- 错误
- 前缀和数组 s[i] 存储的是原数组从第1个元素到第i个元素的累加和。 {{ select(34) }}
- 正确
- 错误
- 差分数组主要用于对某个区间内的所有值进行快速增减,再通过求前缀和恢复出原数组。 {{ select(35) }}
- 正确
- 错误