2023年粤港澳信息学创新大赛【C++小学组】初赛[复制]
您的姓名:
一、单选题(一共15题,每题2分)
1、()是C++的关键字
A. key
B.repeat
C. void
D. var
2.在8位二进制补码中,10110110表示的是十进制下的()。
A.202
B.74
C.-202
D.-74
3、3.2019年10月14日是星期一,1978年10月14日是()。
A.星期日
B.星期五
C.星期一
D. 星期六
4.图G 是一棵n 节点的树,G 上有()条边。
A. n
B.2n
C.n-1
D.n+1
5.具有5个记录的序列,采用直接选择的排序方式进行排序,需要比较的次数是()次。
A.8
B.9
C.10
D. 11
6.有一个长为5的A序列:{3,20,4,6,1},现通过交换其中两个相邻数字的操作进行排序,要将 A序列排成从小到大的递增序列最少要进行()次 交换 操 作。
A.5
B.6
C.7
D. 15
7.7^4和7&4的结果分别为()。
A.3 4
B.4 4
C.3 3
D.4 3
8.在C++ 中,使用()定义 - 个数组.
A. int a[ ];
B. int a{10};
C. int a[10];
D. int a(10);
9.一张有9个节点的简单无向图最多有()条边。
A. 40
B. 81
C. 72
D. 36
10.下图中所使用的数据结构是()。
A. 哈希表
B.栈
C.队列
D.二叉树
11.G 是一张有n 个 点、m 条边的连通图,必须删去()条边才可能将其变成一棵有n 个节点的树。(n<=m)
A.1
B.m-n-1
C.m+n-1
D.m-n+1
12.字符串“abcab"本质不同的连续子串(不包含空串)个数为()。
A.15
B.14
C.13
D.12
13.十进制小数13.375对应的二进制数是()。
A.1101.011
B.1011.011
C.1101.101
D.1010.01
14.在一个班级里,有10个男生和8个女生。如果要从中选出一支由3个人组成的代表团,其中至少 有1个女生,那么有()种不同的选择方案。
A.520
B.696
C.816
D.752
15.一家三口人,恰有两人在同一天生日的概率是()(假设每年都有365天)
A.1/365
B.365/(364*365)
C.(3*364)/(365*365)
D. 1/12
二、阅读程序题(一共3题,共40分)(程序输入不超过数组或字符串定义的范围;判断题正确在答题卡上涂“A”,错误涂“B”;除第16题1分外,判断题每题1.5分,选择题每题3分,共计40分)
第一题
16.若输入3 9 1,则输出9 3 3()
对
错
17.若输入12300400000 3 7,将一定能输出3 12300400000 3。()
对
错
18.该程序中,头文件#include<iostream>可以改成#include< cstdio>。()
对
错
19.若输入3 6 9,则输出()。
A.6 3 6
B.9 3 3
C.6 9 3
D.6 3 3
20.若将“c=a"改成“c=t”则若输入 3 6 9,输出()。
A.6 3 6
B.9 3 3
C.6 9 3
D.6 3 3
21.若将“c=a”改成“c=b”,则若输入3 6 9,输出()。
A.6 3 6
B.9 3 3
C.6 9 3
D.6 3 3
第二题
22.上述代码中,双重循环里循环变量j的枚举顺序改为从 w[i]到 m,输出结果一定不变。
对
错
23.上述代码中,双重循环中变量i的枚举顺序改为从n到1,输出结果一定不变。
对
错
24.若输入数据中,1<=n,m,w[i],d[i]<=30000,则所求答案一定没有溢出。
对
错
25.当m等于所有w[i]的和时,输出结果为()
A.所有d[i]的和
B.最大的d[i]值的n倍
C.最大的d[i]值的m倍
D.n*m
26.当输入为:
4 6
1 4
2 6
3 12
2 7
输出为()。
A.17
B.28
C.29
D.23
27上述代码的时间复杂度为()。
A. O(n)
B.O(n*n*m)
C.O(n*m)
D.O(n*m*m)
第三题
29.去掉头文件“#incude<cstdio>”后程序仍能正常编译运行。
对
错
30.去掉“using namespace std;”后程序仍能正常编译运行。
对
错
31.我们将上述算法称为()。
A.插人排序
B.冒泡排序
C.选择排序
D.归并排序
若输人数据为:
5
3
2
1
5
4
则 if(a[i]<a[tmp])这句话中的条件会成立()次(即后面的 tmp-j会执行多少次)
A.5
B.7
C.3
D.4
28.上述代码实现了对一个长度为n的序列进行排序。
对
错
三、完善程序(单选题,共两大题,每大题15分,每小题3分,共计30分)
第一题
(下 一个全排列)
输入 一个正整数n(2≤n≤106),以及 一个长度为n 的排列,规定(1,2,3,4,…,n)是第1个排列,(n,n-1..1)是最后 一个排列。
根据这n个数组成的排列,输出下一个排列,每一个数后输出一个空格;
若这n个数已经是最后一个 排列,输出“No Next Permutation”。
输入:
5
1 2 5 4 3
输出:
1 3 2 4 5
34.(1)处应填()
A. a[i] <a[i-1]
B. a[i+ 1] <a[i]
C. a[i] >a[i-1]
D. a[i+ 1] > a[i]
35.(2)处应填()
A. b[num] = a[i-2]
B. b[num+1] = a[i-1]
C. b[num+1] = a[i]
D. b[num] = a[i-1]
36.(3)处应填()。
A.num++
B.mid=0
C.mid--
D. cout<<"No Next Permuation"
37.(4)处应填()。
A. b[i]>b[mid]
B. b[i]<b[mid]
C. b[i]<b[num]
D. b[i]>b[num]
38.(5)处应填()。
A. cout<<b[i+ 1]<<" ";
B. cout<<b[num-i]<<" ";
C. cout<<b[i-1]<<" ";
D. cout<<b[i]<< " ";
(二)(拓扑排序)
给出一张n个节点m条边的有向图,求出该图的一个拓扑排序,若无拓扑排序输出-1。
输入:
第一行两个正整数n,m表示点数与边数。
接下来m行,每行两个正整数x,y表示节点x到节点y之间有一条有向边。
输出:
一个拓扑序,按拓扑序输出点的编号。若拓扑序不唯一,输出任意一个均可。若无拓扑序,输出-1.关于拓扑序的例子,如学校里有 A,B,C,D四门课程,要求课程 B,C必须在学习课程A之后才能学习课程D必须在学习课程B,C之后学习。则序列A B C D与序列A C B D均是合理的拓扑序,而序列A B D C与序列 B A C D等均不是拓扑序。即在安排某课程时,其前置课程必须全部学习完毕。
试补全程序。
39.(1)处应填()
A. du[i]
B. q[i]
C. hd<=tl
D. !du[i]
40.(2)处应填()。
A. i<=n
B.i<n
C. i<G[u].size()
D. i<=G[u].size()
41.(3)处应填()。
A. q[++tl]=v
B. q[tl++]=v
C. q[++hd]=v
D. q[hd++]=v
42.(4)处应填()。
A. G[y].push_back(x)
B. G[x].push_back(y)
c. G[x].push(y)
D. G[y].push(x)
43.(5)处应填()。
A. G[y].push _back(x)
B. G[y].push(x)
C. du[y]++
D. du[x]+ +
关闭
更多问卷
复制此问卷