第二十四届全国青少年信息学奥林匹克联赛初
赛
普及组
C
++语言试题
竞
时间:
2018
年
10
月
13
日
14:30~16:30
选手注意
:
试题纸共有
7
页,答题纸共有
2
页,满分
100
分。请在答题纸上作答,写在
试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资
料。
一、单
项选
择题
(共
15
题,每题
2
分,共计
30
分;每
题有且仅有一个正确选项
)
以下哪一种设备属于输出设备:(
)
扫描
仪
B.
键
盘
C.
鼠
标
D.
打印
机
下列四个不同进制的数中,与其它三项数值上不相等的是(
)
。
A.
(269)
16
B.
(617)
10
C.
(1151)
8
D.
(1001101011)
2
1MB
等于
(
)
。
A.
1000
字节
B.
1024
字节
C.
1000 X
1000
字节
D.
1024 X
1024
字节
广域网的英文缩写是(
)
。
LAN
WAN
MAN
LNA
中国计算机学会于(
)年创办全国青少年计算机程序设计竞
。
A.
1983
B.
1984
C.
1985
D.
1986
如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照
CapsLock
、
字母键
A
、字母键
S
、字母键
D
、字母键
F
的顺序循环按键,即
CapsLock
、
A
、
S
、
D
、
F
、
CapsLock
、
A
、
S
、
D
、
F
、……,屏幕上输出的第
81
个字符是字母
(
)
。
A.
A
B.
S
C.
D
D.
a
根节点深度为
0
,一棵深度为
h
的满
k
(
k>1
)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有
k
个子结点的树,共有(
)个结点。
A. (k
h+1
- 1) / (k - 1)
B.
k
h-
1
C.
k
h
D. (k
h-1
)
/
(k
-
1)
以下排序算法中,不需要进行关键字比较操作的算法是(
)
。
基数排序
冒泡排序
堆排序
直接插入排序
给定一个含
N
个不相同数字的数组,在最坏情况下,找出其中最大或最小的
数,至少需要
N - 1
次比较操作。则最坏情况下,在该数组中同时找最大与
最小的数至少需要(
)
次比较操作。
(
⌈ ⌉
表示向上取整,
⌊ ⌋
表示向下取整)
A.
⌈
3N /
2
⌉
-
2
B.
⌊
3N
/
2
⌋
-
2
C.
2N
-
2
D.
2N -
4
下面的故事与(
)
算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事……’”
A.
枚举
B.
递归
C.
贪心
D.
分治
由四个没有区别的点构成的简单无向连通图的个数是(
)
。
6
7
8
9
设含有
10
个元素的集合的全部子集数为
S
,其中由
7
个元素组成的子集数为
T
,则
T
/
S
的值为(
)
。
A. 5
/
32
B.
15
/
128
C.
1
/
8
D.
21
/
128
13.
10000
以内,与
10000
互质的正整数有(
)
个。
A.
2000
B.
4000
C.
6000
D.
8000
为了统计一个非负整数的二进制形式中
1
的个数,代码如下:
int
CountBit(int
x)
{
int
ret
=
0; while (x)
{
ret++;
;
}
return
ret;
}
则空格内要填入的语句是(
)
。
A.
x
>>=
1
B.
x &=
x -
1
C.
x
|= x
>>
1
D.
x <<=
1
下图中所使用的数据结构是(
)
。
压入
A
压入
B
弹出
B
压入
C
B
C
A
A
A
A
A.
哈希表
B.
栈
C.
队列
D.
二叉树
二、问题求解(共
2
题,每题
5
分,共计
10
分
)
甲乙丙丁四人在考虑周末要不要外出郊游。
已知①如果周末下雨,并且乙不去,则甲一定不去;②如果乙去,则丁一定去;③如果丙去,则丁一定不去;④如果丁不去,而且甲不去,则丙一定不去。如果周末丙去了,则甲
(去了/没去)(1 分),乙
(去
了/没去)(1 分),丁
(去了/没去)(1 分),周末
(下雨/
没下雨)(2
分)。
从
1
到
2018
这
2018
个数中,共
有
个包含数字
8
的数
。
包含数字
8
的数是指有某一位是
“8”
的数, 例如
“2018”与“188”。
三、阅读程序写结果(共
4
题,每题
8
分,共计
32
分)
#include
<cstdio> char
st[100];
int main() {
scanf("%s",
st);
for (int i = 0; st[i]; ++i)
{
if
('A'
<=
st[i]
&&
st[i]
<=
'Z') st[i] += 1;
}
printf("%s\n",
st); return 0;
}
输入:
QuanGuoLianSai
输出:
#include
<cstdio> int main() {
int x; scanf("%d",
&x); int res = 0;
for
(int
i
=
0;
i
<
x;
++i)
{ if (i * i % x == 1) {
++res;
}
}
printf("%d",
res); return 0;
}
输入:
15
输出
:
#include <iostream> using
namespace
std; int n, m;
int
findans(int
n,
int
m)
{ if (n == 0) return m;
if (m == 0) return n %
3;
return
findans(n
-
1,
m)
-
findans(n,
m
-
1)
+
findans(n
- 1, m - 1);
}
int
main(){
cin >> n >>
m;
cout
<<
findans(n,
m)
<<
endl; return 0;
}
输入:
5
6
输出
NOIP2018第二十四届普及组初赛题目C++ 试题,2018年信息学奥赛NOIP普及组初赛C++真题