试卷 CSP 2019 入门级第一轮
CSP 2019 入门级第一轮
单项选择题
第 1 题    单选题

中国的国家顶级域名是( ).

A.

.cn

B.

.ch

C.

.chn

D.

.china

第 2 题    单选题

二进制数11 1011 1001 0111和01 0110 1110 1011进行逻辑与运算的结果是( ).

A.

01 0010 1000 1011

B.

01 0010 1001 0011

C.

01 0010 1000 0001

D.

01 0010 1000 0011

第 3 题    单选题

一个32位整型变量占用( )个字节。

A.

32

B.

128

C.

4

D.

8

第 4 题    单选题

若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b= 1; b<= c; b++)

 s=s-1;

则与上述程序段功能等价的赋值语句是()

A.

s=a-c;

B.

s=a-b;

C.

s=s-c;

D.

s=b-c;

第 5 题    单选题

设有100个已排好序的数据元素,采用折半查找时,最大比较次数为()。

A.

7

B.

10

C.

6

D.

8

第 6 题    单选题

链表不具有的特点是()

A.

插入删除不需要移动元素

B.

不必事先估计存储空间

C.

所需空间与线性表长度成正比

D.

可随机访问任一元素

第 7 题    单选题

把8个同样的球放在5个同样的袋子里,允许有的袋子空着不放,问共有多少种不同 的分法?() 提示:如果8个球都放在一个袋子里,无论是哪个袋子,都只算同一种分法。

A.

22

B.

24

C.

18

D.

20

第 8 题    单选题

一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的 结点(根结点的下标为1,若某结点的下标为i,则其左孩子位于下标2i处、右孩子位于下标2i+1 处),则该数组的最大下标至少为( )。

A.

6

B.

10

C.

15

D.

12

第 9 题    单选题

100以内最大的素数是( ).

A.

89

B.

97

C.

91

D.

93

第 10 题    单选题

319和377的最大公约数是( )。

A.

27

B.

33

C.

29

D.

31

第 11 题    单选题

新学期开学了,小胖想减肥,健身教练给小胖制定了两个训练方案。方案一:每次连续跑3公里可以消耗300千卡(耗时半小时);方案二:每次连续跑5公里可以消耗600千卡(耗时1小时)。小胖每周周一到周四能抽出半小时跑步,周五到周日能抽出一小时跑步。另外,教练建议小胖每周最多跑21公里,否则会损伤膝盖。请问如果小胖想严格执行教练的训练方案,并且不想损伤膝盖,每周最多通过跑步消耗多少千卡?( )

A.

3000

B.

2500

C.

2400

D.

2520

第 12 题    单选题

—副纸牌除掉大小王有52张牌,四种花色,每种花色13张。假设从这52张牌中随 机抽取13张纸牌,则至少()张牌的花色一致。

A.

4

B.

2

C.

3

D.

5

第 13 题    单选题

一些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是9, 9颠倒 过来看还是6,其他数字颠倒过来都不构成数字。 类似的,一些多位数也可以颠倒过来看,比如106颠倒过来是901。假设某个城市的车牌只由 5位数字组成,每一位都可以取0到9。 请问这个城市最多有多少个车牌倒过来恰好还是原来的车牌?( )

A.

60

B.

125

C.

75

D.

100

第 14 题    单选题

题如图

A.

ABCDEFGHIJ

B.

ABDEGHJCFI

C.

ABDEGJHCFI

D.

ABDEGHJFIC

第 15 题    单选题

以下哪个奖项是计算机科学领域的最高奖?( )

A.

图灵奖

B.

鲁班奖

C.

诺贝尔奖

D.

普利策奖

阅读程序
第 16 题    判断题

第16~21题题目

1 #include <cstdio>
2 #include <cstring>
3 using namespace std;
4 char st[100];
5 int main() {
6 scanf("%s", st);
7 int n = strlen(st);
8 for (int i = 1; i <= n; ++i) {
9 if (n % i == 0) {
10 char c = st[i - 1];
11 if (c >= 'a')
12 st[i - 1] = c - 'a' + 'A';
13 }
14 }
15 printf("%s", st);
16 return 0;
17 }

输入的字符串只能由小写字母或大写字母组成。()

A.
正确
B.
错误
第 17 题    判断题

若将第8行的“i = 1”改为“i = 0”,程序运行时会发生错误。()

A.
正确
B.
错误
第 18 题    判断题

若将第8行的“i <= n”改为“i * i <= n”,程序运行结果不会改变。

A.
正确
B.
错误
第 19 题    判断题

若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。 ()

A.
正确
B.
错误
第 20 题    单选题

若输入的字符串长度为18,那么输入的字符串跟输出的字符串相比,至多有()个字 符不同。

A.

18

B.

6

C.

10

D.

1

第 21 题    单选题

若输入的字符串长度为(),那么输入的字符串跟输出的字符串相比,至多有36个 字符不同。

A.

36

B.

100000

C.

1

D.

128

第 22 题    判断题

第22~27题题目

1 #include<cstdio>

2 using namespace std;

3 int n, m;

4 int a[100], b[100];

6 int main() {

7 scanf("%d%d", &n, &m);

8 for (int i = 1; i <= n; ++i)

9 a[i] = b[i] = 0;

10 for (int i = 1; i <= m; ++i) {

11 int x, y;

12 scanf("%d%d", &x, &y);

13 if (a[x] < y && b[y] < x) {

14 if (a[x] > 0)

15 b[a[x]] = 0;

16 if (b[y] > 0)

17 a[b[y]] = 0;

18 a[x] = y;

19 b[y] = x;

20 }

21 }

22 int ans = 0;

23 for (int i = 1; i <= n; ++i) {

24 if (a[i] == 0)

25 ++ans;

26 if (b[i] == 0)

27 ++ans;

28 }

29 printf("%d", ans);

30 return 0;

31 }

假设输入的n和m都是正整数,x和y都是在[1, n]的范围内的整数,完成下面的判断题和单选

题:

当m>0时,输出的值一定小于2n。()

A.
正确
B.
错误
第 23 题    判断题

执行完第27行的"++ans"时,ans —定是偶数。()

A.
正确
B.
错误
第 24 题    判断题

a[i]和b[i]不可能同时大于0。()

A.
正确
B.
错误
第 25 题    判断题

右程序执行到第13行时,x总是小于y,那么第15行不会被执行。()

A.
正确
B.
错误
第 26 题    单选题

若m个x两两不同,且m个y两两不同,则输出的值为()

A.

B.

C.

D.

第 27 题    单选题

若m个x两两不同,且m个y都相等,则输出的值为()

A.

2n-2

B.

2n

C.

2m

D.

2n-2m

第 28 题    判断题

第28~33题题目

1 #include <iostream>

2 using namespace std;

3 const int maxn = 10000;

4 int n;

5 int a[maxn];

6 int b[maxn];

7 int f(int l, int r, int depth) {

8 if (l > r)

9 return 0;

10 int min = maxn, mink;

11 for (int i = l; i <= r; ++i) {

12 if (min > a[i]) {

13 min = a[i];

14 mink = i;

15 }

16 }

17 int lres = f(l, mink - 1, depth + 1);

18 int rres = f(mink + 1, r, depth + 1);

19 return lres + rres + depth * b[mink];

20 }

21 int main() {

22 cin >> n;

23 for (int i = 0; i < n; ++i)

24 cin >> a[i];

25 for (int i = 0; i < n; ++i)

26 cin >> b[i];

27 cout << f(0, n - 1, 1) << endl;

28 return 0;

29 }

如果a数组有重复的数字,则程序运行时会发生错误。()

A.
正确
B.
错误
第 29 题    判断题

如果b数组全为0,则输出为0。()

A.
正确
B.
错误
第 30 题    单选题

当n=100时,最坏情况下,与第12行的比较运算执行的次数最接近的是:()。

A.

5000

B.

600

C.

6

D.

100

第 31 题    单选题

当n=100时,最好情况下,与第12行的比较运算执行的次数最接近的是:()。

A.

100

B.

6

C.

5000

D.

600

第 32 题    单选题

当n=10时,若b数组满足,对任意0<=i<n,都有b[i] = i + 1,那么输出最大为()。

A.

386

B.

383

C.

384

D.

385

第 33 题    单选题

当n=100时,若b数组满足,对任意0<=i<n,都有b[i]=1,那么输出最小为()。

A.

582

B.

580

C.

579

D.

581

完善程序
第 34 题    单选题

第34~38题题目

(矩阵变幻)有一个奇幻的矩阵,在不停的变幻,其变幻方式为:

数字 0 变成矩阵

0 0 

0 1

数字 1 变成矩阵

1 1

1 0

最初该矩阵只有一个元素 0,变幻 n 次后,矩阵会变成什么样?

例如,矩阵最初为:[0];

矩阵变幻 1 次后:

0 0 

0 1

矩阵变幻 2 次后:

0 0 0 0

0 1 0 1

0 0 1 1

0 1 1 0

输入一行一个不超过 10 的正整数 n。输出变幻 n 次后的矩阵。

试补全程序。

提示:

<< 表示二进制左移运算符,例如(11)_2 << 2 = (1100)_2;

而 ^ 表示二进制异或运算符,它将两个参与运算的数中的每个对应的二进制位—进行比较,

若两个二进制位相同,则运算结果的对应二进制位为 0 ,反之为 1。

1 #include <cstdio>
2 using namespace std;
3 int n;
4 const int max_size = 1 << 10;
5 
6 int res[max_size][max_size];
7 
8 void recursive(int x, int y, int n, int t) {
9 if (n == 0) {
10 res[x][y] = ①;
11 return;
12 }
13 int step = 1 << (n - 1);
14 recursive(②, n - 1, t);
15 recursive(x, y + step, n - 1, t);
16 recursive(x + step, y, n - 1, t);
17 recursive(③, n - 1, !t);
18 }
19
20 int main() {
21 scanf("%d", &n);
22 recursive(0, 0, ④);
23 int size = ⑤;
24 for (int i = 0; i < size; i++) {
25 for (int j = 0; j < size; j++)
26 printf("%d", res[i][j]);
27 puts("");
28 }
29 return 0;
30 }

①处应填()

A.

n%2

B.

0

C.

t

D.

1

第 35 题    单选题

②处应填()

A.

x-step,y-step

B.

x,y-step

C.

x-step,y

D.

x,y

第 36 题    单选题

③处应填()

A.

x-step,y-step

B.

x+step,y+step

C.

x-step,y

D.

x,y-step

第 37 题    单选题

④处应填()

A.

n-1,n%2

B.

n,0

C.

n,n%2

D.

n-1,0

第 38 题    单选题

⑤处应填()

A.

1<<(n+1)

B.

1<<n

C.

n+1

D.

1<<(n-1)

第 39 题    单选题

①处应填()

A.

++cnt [i]

B.

++cnt[b[i]]

C.

++cnt[a[i] * maxs + b[i]]

D.

++cnt[a[i]]

第 40 题    单选题

②处应填()

A.

ord[--cnt[a[i]]] = i

B.

ord[--cnt[b[i]]] = a[i]

C.

ord[--cnt[a[i]]] = b[i]

D.

ord[--cnt[b[i]]] = i

第 41 题    单选题

③处应填()

A.

++cnt[b[i]]

B.

++cnt[a[i] * maxs + b[i]]

C.

++cnt[a[i]]

D.

++cnt [i]

第 42 题    单选题

④处应填()

A.

res[--cnt[a[ord[i]]]] = ord[i]

B.

res[--cnt[b[ord[i]]]] = ord[i]

C.

res[--cnt[b[i]]] = ord[i]

D.

res[--cnt[a[i]]] = ord[i]

第 43 题    单选题

⑤处应填()

A.

a[i], b[i]

B.

a[res[i]], b[res[i]]

C.

a[ord[res[i]]], b[ord[res[i]]]

D.

a[res[ord[i]]], b[res[ord[i]]]

答题卡
单项选择题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
阅读程序
完善程序
题目总数:43
总分数:100
时间:120分钟
QQ
微信