一、单项选择题(共15题,共计30分)

1.以下不属于面向对象程序设计语言的是()。

  • A.C++
  • B.Python
  • C.Java
  • D.C

正确答案是: D

2.以下奖项与计算机领域最相关的是()。

  • A.奥斯卡奖
  • B.图灵奖
  • C.诺贝尔奖
  • D.普利策奖

正确答案是: B

3.目前主流的计算机储存数据最终都是转换成()数据进行存储。

  • A.二进制
  • B.十进制
  • C.八进制
  • D.十六进制

正确答案是: A

4.以比较作为基本运算,在N个数中找出最大数,最坏情况下所需要的最少的比较次数为()。

  • A.N2
  • B.N
  • C.N-1
  • D.N+1

正确答案是: C

5.对于入栈顺序为a,b,c,d,e的序列,下列()不是合法的出栈序列。

  • A.a,b,c,d,e
  • B.e,d,c,b,a
  • C.b,a,c,d,e
  • D.c,d,a,e,b

正确答案是: D

6.对于有n个顶点,m条边的无向连通图(m>n),需要删掉()条边才能使其称为一棵树。

  • A.n-1
  • B.m-n
  • C.m-n-1
  • D.m-n+1

正确答案是: D

7.二进制数101.11对应的十进制数是()。

  • A.6.5
  • B.5.5
  • C.5.75
  • D.5.25

正确答案是: C

8.如果一棵二叉树只有根结点,那么这棵二叉树高度为1。请问高度为5的完全二叉树有()种不同的形态?

  • A.16
  • B.15
  • C.17
  • D.32

正确答案是: A

9.表达式a*(b+c)*d的后缀表达式为(),其中“*”和“+”是运算符。

  • A.**a+bcd
  • B.abc+*d*
  • C.abc+d**
  • D.*a*+bcd

正确答案是: B

10.6个人,两个人组一队,总共组成三队,不区分队伍的编号,不同的组队情况有()。

  • A.10
  • B.15
  • C.30
  • D.20

正确答案是: B

11.在数据压缩编码种的哈夫曼编码方法,在本质是一种()的策略。

  • A.枚举
  • B.贪心
  • C.递归
  • D.动态规划

正确答案是: B

12.由1,1,2,2,3这五个数字组成不同的三位数有()种。

  • A.18
  • B.15
  • C.12
  • D.24

正确答案是: A

13.考虑如下递归算法

solve(n)if n<=1 return 1else if n>=5 return n*solve(n-2)else return n*solve(n-1)

则调用solve(7)得到的返回结果为()。

  • A.105
  • B.840
  • C.210
  • D.420

正确答案是: C

14.以a为起点,对右边的无向图进行深度优先遍历,则b,c,d,e四个点中有可能作为最后一个遍历到的点的个数为()。

  • A.1
  • B.2
  • C.3
  • D.4

正确答案是: B

15.有四个人要从A点坐一条船过河到B点,船一开始在A点。该船一次最多可坐两个人。已知这四个人中每个人独自坐船的过河时间分别为1,2,4,8,且两个人坐船的过河时间为两人独自过河时间的较大者。则最短()时间可以让四个人过河到B点(包括从B点把船开回A点的时间)。

  • A.14
  • B.15
  • C.16
  • D.17

正确答案是: B

二、阅读程序(程序输入不超过数组或字符串定义的范围,共计40分)

PS:因为无法清晰打出√与×号,所以判断题用选择的方式呈现(和洛谷一样)

(一)

01 #include <stdio.h>
02
03 int n;
04 int a[1000];
05
06 int f(int x)
07 {
08      int ret = 0;
09      for(; x; x &= x - 1) ret ++;
10      return ret;
11 }
12
13 int g(int x)
14 {
15      return x & - x;
16 }
17
18 int main()
19 {
20      scanf("%d", &n);
21      for (int i = 0; i < n; i++) scanf("%d", &a[i]);
22      for (int i = 0; i < n; i++)
23          printf("%d ", f(a[i]) + g(a[i]));
24      printf("\n");
25      return 0;
26 }

16.输入的n等于1001时,程序不会发生下标越界。这句话描述是否正确?

  • A.正确
  • B.错误

正确答案是: B

17.输入的a[i]必须全为正整数,否则程序将陷入死循环。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: B

18.当输入为“5 2 11 9 16 10”时,输出为“3 4 3 17 5”。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: B

19.当输入为“1 511998”时,输出为“18”。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: A

20.将源代码中g函数的定义(13-16行)移到main函数的后面,程序可以正常编译运行。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: B

21.当输入为“2 -65536 2147483647”时,输出为()

  • A."65532 33"
  • B."65552 32"
  • C."65535 34"
  • D."65554 33"

正确答案是: B

(二)

01 #include <cstdio.h>
02 #include <string.h>
03
04 char base[64];
05 char table[256];
06 char str[256];
07 char ans[256];
08
09 void init()
10 {
11      for (int i = 0; i < 26; i++) base[i] = 'A' + i;
12      for (int i = 0; i < 26; i++) base[26 + i] = 'a' + i;
13      for (int i = 0; i < 10; i++) base[52 + i] = '0' + i;
14      base[62] = '+', base[63] = '/';
15
16      for (int i = 0; i < 256; i++) table[i] = 0xff;
17      for (int i = 0; i < 64; i++) table[base[i]] = i;
18      table['='] = 0;
19 }
20
21 void decode(char *str)
22 {
23      char *ret = ans;
24      int i, len = strlen(str);
25      for (i = 0; i < len; i += 4){
26          (*ret++) = table[str[i]] << 2 | table[str[i + 1]] >> 4;
27          if(str[i + 2] != '=')
28              (*ret++) = (table[str[i + 1]] & 0x0f) << 4 | table[str[i + 2]] >> 2;
29          if(str[i + 3] != '=')
30              (*ret++) = table[str[i + 2]] << 6 | table[str[i + 3]];
31      }
32 }
33
34 int main()
35 {
36      init();
37      printf("%d\n", (int)table[0]);
38
39      scanf("%s", str);
40      decode(str);
41      print("%s\n", ans);
42      return 0;
43 }

22.输出的第二行一定是由小写字母、大写字母、数字和“+”、“/”、“=”构成的字符串。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: B

23.可能存在输入不同,但输出的第二行相同的情形。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: A

24.输出的第一行为“-1”。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: A

25.设输入字符串长度为n,decode函数的时间复杂度为()

  • A.

  • B.

  • C.

  • D.

正确答案是: B

26.当输入为“Y3Nx”时,输出的第二行为()

  • A.“csp”
  • B.“csq”
  • C.“CSP”
  • D.“Csp”

正确答案是: B

27.当输入为“Y2NmIDIwMjE=”时,输出的第二行为()

  • A.“ccf2021”
  • B.“ccf2022”
  • C.“ccf 2021”
  • D.“ccf 2022”

正确答案是: C

(3)

01 #include<stdio.h>
02
03 #define n 100000
04 #define N n + 1
05
06 int m;
07 int a[N],b[N],c[N],d[N];
08 int f[N],g[N];
09
10 void init()
11 {
12      f[1] = g[1] = 1;
13      for(int i = 2;i <= n;i++){
14          if(!a[i]) {
15              b[m++] = i;
16              c[i] = 1,f[i] = 2;
17              d[i] = 1,g[i] = i + 1;
18          }
19          for(int j = 0;j < m && b[j] * i <= n;j++){
20              int k = b[j];
21              a[i * k] = 1;
22              if(i * k == 0){
23                  c[i * k] = c[i] + 1;
24                  f[i * k] = f[i] / c[i * k] * (c[i * k] + 1);
25                  d[i * k] = d[i];
26                  g[i * k] = g[i] * k + d[i];
27                  break;
28                  }
29                  else{
30                      c[i * k] = 1;
31                      f[i * k] = 2 * f[i];
32                      d[i * k] = g[i];
33                      g[i * k] = g[i] * (k + 1);
34                  }
35              }
36          }
37 }
38
39 int main()
40 {
41      init();
42
43      int x;
44      scanf("%d",&x);
45      printf("%d %d\n",f[x],g[x]);
46      return 0;
47 } 

28.若输入不为“1”,把第12行删去不会影响输出的结果。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: A

29.第24行的“f[i] / c[i * k]”可能存在无法整除而向下取整的情况。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: B

30.在执行完init()后,f数组不是单调递增的,但g数组是单调递增的。这句话的描述是否正确?

  • A.正确
  • B.错误

正确答案是: B

31.init函数的时间复杂度为( )。

  • A.

  • B.

  • C.

     

  • D.

正确答案是: A

32.在执行完init( )后,f[1],f[2],f[3] …… f[100]中有( )个等于2。

  • A.

    23

  • B.

    24

  • C.

    25

  • D.

    26

正确答案是: C

33.当输入为“1000”时,输出为( )

  • A.

    ”15 1340”

  • B.

    ”15 2340”

  • C.

    ”16 2340”

  • D.

    ”16 1340”

正确答案是: C

三、完善程序

(一)

(Josephus 问题) 有n个人围成一个圈,一次标号0至n-1,从0号开始,依次0,1,0,1,. . . . 交替报数,报道1 的人会离开,直至圈中只剩下一个人,求最后剩下人的编号。

试补全模拟程序

01 #include<stdio.h>
02
03 const int MAXN=1000000;
04 int F[MAXN];
05
06 int main(){
07    int n;
08    scanf("%d",&n);
09    int  i=0,p=0,c=0;
10    while( ① ){
11        if(F[i]==0){
12            if( ② ){
13                F[i]=1;
14                ③;
15            }
16            ④ ;
17        }
18        ⑤ ;
19    }
20    int ans=-1;
21    for(int i=0;i<n;i++)
22        if(F[i]==0)
23            ans=i;
24    printf("%d\n",ans);
25    return 0;
26 }

34.①处填( )

  • A.i<n
  • B. c<n
  • C. i<n-1
  • D.c<n-1

正确答案是: D

35.②处填( )

  • A.i%2==0
  • B.i%2==1
  • C.p
  • D.!p

正确答案是: C

36.③处填( )

  • A.i++
  • B. i=(i+1)%n
  • C.c++
  • D.p^=1

正确答案是: C

37.④处填()

  • A.i++
  • B.i=(i+1)%n
  • C. c++
  • D.p^=1

正确答案是: D

38.⑤处填( )

  • A.i++
  • B.i=(i+1)%n
  • C.c++
  • D.p^=1

正确答案是: B

(二)

(矩形计数)平面上有n个关键点,求有多少个四条边都和x轴或者y轴平行的矩形,满足四个顶点都是关键点。给出的关键点可能有重复,但完全重合的矩形只计一次。

试补全枚举算法。

01 #include <stdio.h>
02
03 struct point{
04      int x, y, id;
05 };
06
07 int equals(struct point a,struct point b){
08      return a.x == b.x && a.y == b.y;
09 }
10
11 int cmp(struct point a, struct point b){
12      return ①;
13 }
14
15 void sort(struct point A[], int n){
16      for(int i = 0; i < n; i++)
17          for(int j = 1; j < n; j++)
18              if(cmp(A[j], A[j - 1])){
19                  struct point t=A[j];
20                  A[j] = A[j - 1];
21                  A[j - 1] = t;
22              }
23 }
24
25 int unique(struct point A[],int n){
25      int t=0;
25      for(int i = 0; i < n; i++)
25          if(②)
25              A[t++] = A[i];
30      return t;
31 }
32
32 int binary_search(struct point A[], int n, int x, int y){
32      struct point p;
32      p.x = x;
33      p.y = y;
32      p.id = n;
32      int a = 0, b = n - 1;
32      while(a < b){
40          int mid=③;
41          if(④)
42              a = mid + 1;
43          else
44              b = mid;
45      }
46      return equals(A[a], p);
47 }
48
49 #define MAXN 1000
50 struct point A[MAXN];
51
52 int main(){
53  int n;
54  scanf("%d",&n);
55  for(int i = 0; i < n; i++){
56      scanf("%d %d", &A[i].x, &A[i].y);
57      A[i].id = i;
58  }
59  sort(A,n);
60  n = unique(A, n);
61  int ans = 0;
62  for(int i = 0; i < n; i++)
63      for(int j = 0; j < n; j++)
64          if(⑤&& binary_search(A, n, A[i].x, A[j].y) && binary_search(A, n, A[j].x, A[i].y)){
65              ans++;
66          }
67  printf("%d\n", ans);
68  return 0;
69 }

39.①处应填()

  • A.a.x != b.x ? a.x < b.x : a.id < b.id
  • B.a.x != b.x ? a.x < b.x : a.y< b.y
  • C.equals(a,b) ? a.id<b.id:a.x<b.x
  • D.equals(a,b) ? a.id<b.id: (a.x != b.x ? a.x < b.x : a.y< b.y)

正确答案是: B

40.【 单选 】3 分

②处应填()

  • A. i == 0 || cmp(A[i], A[i - 1])
  • B. t == 0 || equals(A[i], A[t - 1])
  • C.i == 0 || !cmp(A[i], A[i - 1])
  • D. t == 0 || !equals(A[i], A[t -1])

正确答案是: D

41.【 单选 】3 分

③处应填()

  • A.b – (b – a) / 2 + 1
  • B.(a + b + 1) >> 1
  • C.(a + b) >> 1
  • D.a + (b – a + 1) / 2

正确答案是: C

42.④处应填()

  • A.!cmp(A[mid], p)
  • B.cmp(A[mid], p)
  • C.cmp(p, A[mid])
  • D.!cmp(p, A[mid])

正确答案是: B

43.⑤处应填()

  • A.A[i].x == A[j].x
  • B.A[i].id < A[j].id
  • C.A[i].x == A[j].x && A[i].id < A[j].id
  • D.A[i].x<A[j].x && A[i].y < A[j].y

正确答案是: D

CSP-J2021原题目及答案相关推荐

  1. 华为公司面试新员工的有关计算机网络的题目和答案

    一.华为公司面试新员工的有关计算机网络的题目和答案 RFC1918文件规定了保留作为局域网使用的私有地址:            10.0.0.0                 -       10 ...

  2. 编译原理复习四:编译器结构 消除左递归、左公因子 最右推导 寻找句柄讲解(附题目和答案)

    需要原卷和答案请点赞关注收藏后评论区留言私信~~~ 下面对编译原理中一些常见的概念以及算法小题的讲解,这部分可能单独出题考试,也有可能混在大题中出现 一.编译器结构 题目如下 The phases o ...

  3. 剑指offer题目及答案

    剑指offer 最近在牛客网上刷剑指offer的题目,现将题目和答案总结如下: 1. 二维数组的查找 2. 替换空格 3. 从尾到头打印链表 4. 重建二叉树 5. 用两个栈实现队列 6. 旋转数组的 ...

  4. 中国大学python程序设计答案_Python程序设计1-中国大学mooc-试题题目及答案

    Python程序设计1-中国大学mooc-试题题目及答案 更多相关问题 固定总价合同一般适用于()的工程. A.设计图纸完整齐备B.工程规模小C.工期较短D. 由于使用不当造成的建设工程质量损坏问题, ...

  5. R语言题目及答案(1)

    关于包的安装等一些r语言基础知识,可以看看我另一篇的博客:r语言基础教程 R语言题目及参考答案(2):统计性描述相关题目 R语言题目及参考答案(3):统计推断相关题目 R语言题目及参考答案(4):回归 ...

  6. 2022电工(初级)上岗证题目及答案

    题库来源:安全生产模拟考试一点通公众号小程序 2022年电工(初级)操作考试题是电工(初级)考试模拟题的新全考试题型!2022电工(初级)上岗证题目及答案依据电工(初级)考试大纲.电工(初级)考试资料 ...

  7. 最新华农c语言教材答案,华农C语言题目及答案完整版

    <华农C语言题目及答案完整版>由会员分享,可在线阅读,更多相关<华农C语言题目及答案完整版(37页珍藏版)>请在人人文库网上搜索. 1.题目6567:The first C P ...

  8. 2022煤气上岗证题目及答案

    题库来源:安全生产模拟考试一点通公众号小程序 2022煤气培训试题系煤气试卷的新全考试题型!2022煤气上岗证题目及答案根据煤气最新教材汇编.煤气复审模拟考试随时根据安全生产模拟考试一点通上提高应试能 ...

  9. 你画我猜 计算机题目,你画我猜:你知道这些题目的答案是什么吗?

    原标题:你画我猜:你知道这些题目的答案是什么吗? 考试规则说明: 本次考试纯属娱乐,若有疑问,可以和身边同学交流一下.考试时间不限,答案只作参考,并不具有唯一性,大家可以畅所欲言哦! 现在考试正式开始 ...

最新文章

  1. 『TensorFlow』卷积层、池化层详解
  2. Python笔记(十五)_异常处理
  3. linux课堂笔记(4)
  4. java 里的 循环不变式 百度百科,循环不变式
  5. SharePoint Server 2016 部署安装(七)—— 配置SharePoint Server
  6. cesium 圆形波动
  7. Powershell 磁盘使用空间监控,并使用dbmail发送邮件
  8. 《构建之法》第四章读后感--软件工程
  9. GJB5000A与DO178B/C简介及对比
  10. public static void main(String[] args) 是什么意思?
  11. DM6437 平台概况
  12. IELTS-writing exercise Expository_Text_18
  13. 蓝牙inquiry流程之命令下发
  14. cf I - Irrational Division
  15. 【springboot】mybatis-generator配置
  16. 12.3 文本查询程序
  17. vlan间路由的实现(思科模拟器)
  18. 【译】Sobel 算子文档
  19. 【技巧】我是如何 搜索 到想要的信息的
  20. 武汉星起航跨境:跨境电商新蓝海,南非跨境电商市场迸发活力

热门文章

  1. Spring面试专题
  2. 第一个Ajax程序给我的下马威——xmlHttp的status=0?
  3. 《铁路竹枝词四首》_文若
  4. Dynamics 365 Command Checker for Ribbons
  5. J0ker的CISSP之路:复习-Information Security Management(2)
  6. dhtml_DHTML乌托邦:使用JavaScript和DOM的现代Web设计
  7. php k线图 echarts,股票K线图,折线图总结(echarts)
  8. 【构建】react打造你的第一个Bilibili首页开发项目
  9. SAP的标准委外采购中都有哪些坑
  10. 【语音增强论文解读 02】DCCRN: Deep Complex Convolution Recurrent Network for Phase-AwareSpeech Enhancement