a--1:普及组CSP-J2023初赛押题卷--第一部分

时间:2024-07-25 14:07:15 分类:普及组CSP-J模拟题

普及组 CSP-J 2023初赛押题卷

 

一、 单项选择题(共15题, 每题2分, 共计30分; 每题有且仅有一个正确选项)

 

1.       十六进制数(-73)16 8 位二进制补码是(    )。

A. 10001110               B. 10001101          C. 01110010                                                       D. 01110011

 

2.       以下关于CSP-J/S的描述错误的是(    )。

A. CSP-J/S 非专业认证在校生与在职人员皆可参加

B. CSP-J/S 是中国计算机学会举办的程序设计竞赛

C. CSP-J/S 属于 NOI 系列赛事

D. CSP-J/S 第二轮实现网上注册、报名,未通过网上报名的认证者可以向        本省特派员申请获得第二轮认证资格

 

3.       以下语言中,同时符合面向对象和解释执行的是什么语言(    )。

A. Python                   B. Fortran              C. C++                                                       D. Pascal

 

4.       某足校买了一台小米的 4K 超清电视,其屏幕分辨率是 4096 X 2160, 每一个像素都是 32 位真彩色, 一个足球比赛的视频文件有 4 分钟, 每秒钟播放 24 帧。在无压缩情况下请计算这个视频占用空间最接近以下哪个值(    )。

A. 90 GB                    B. 125 GB              C. 200 GB                                                       D. 100 GB

 

5.      假设一个待排序数组已基本有序, 以下排序算法效率最高的是(    )。

A. 插入排序 B. 快速排序             C. 归并排序      D. 选择排序

 

6.       包含 m 个分支结点(也就是度不为 0 的节点)的非空满 n 叉树, 其中 n 1这棵树度为 0 结点(叶子结点)数目为(    )。

A. mn + 1      B. mn - 1     C. nm + m - 1   D. nm - m + 1

 

7.       前缀表达式-*1+234的后缀表达式是(    )。

A. 1234*+-    B. 123+*4-      C. 123*+4-    D. -+*1234

 

8.      关于 CPU 的说法如下哪个是正确的?   

A. CPU 只有 Intel AMD 公司才能生产

B. Intel 公司发明了世界上最早的 CPU

C. CPU 能直接运行机器语言

D. 现在有昂贵的 GPU,不需要 CPU 台式电脑也可以正常运行

 

9.       关于计算机网络, 下面的说法哪些是正确的?   

A. 网络协议之所以分层主要是新技术需要兼容历史上老的实现方案

B. 由于网络地址不够用,新一代互联网使用的IPv5标准的地址

C. TCP/IP是互联网的基础协议族,包含有传输层和网络层的通信协议

D. 互联网上每一台主机都需要一个IPv6地址才能正常工作

 

10.   设某哈希表的地址空间为 0 10, 对应散列函数为hash(n) = n % 11, 如果用线性探查法解决碰撞。从空的哈希表开始, 依次插入关键码值 71, 25, 84, 57, 38, 则最后一个关键码 38 的地址为(    )。

A. 3                          B. 6                        C. 4                                 D. 5 

 

11.   现在有一个十进制数 0.125,它等于十六进制数的多少?   

A. 0.10                     B. 0.80                   C. 0.40                                 D. 0.20

 

12.   以下逻辑表达式里面不管AB如何取值恒为真的是?   

A. (¬AB)(AB)

B. (¬AB)(A¬B)B

C. (¬AB)(A¬B)BA                    

D. (¬AB)(A¬B)A¬B

 

13.   函数 rand()可以生成一个 0 32767 范围的随机整数, 现在希望得到一个范围在[a, b]的随机整数, a b 都是正整数并且都不超过 1024 同时还有a < b, 那么下述表达式哪个是可行的?   

A. rand() % (b-a) + a

B. rand() % (b-a+1) + a

C. rand() % (b-a) + a + 1

D. rand() % (b-a+1) + a + 1

 

14.   某学校 1 位领队带 5 名参加 python 竞赛的队员和 4 名参加 C++ 竞赛的队员排成一行拍照留念,要求参加 python 竞赛的队员必须排在一起,领队必须在中间,参加 C++ 竞赛的队员也必须排在一起,一共    种不同的排列 

A. 11520         B. 5760         C. 2880        D. 8640

 

15.   11 个结点的非连通无向图最多有    条边。

A. 55                B. 90            C. 72     D. 45

 

二、阅读程序(程序输入不超过数组或字符串定义的范围; 判断题正确填√, 错误填X; 除特殊说明外, 判断题1.5, 选择题3, 共计40)

1.

 

01   #include<iostream>

02   using namespace std;

03    int  main( )

04   {

05       int x, y, z, w;

06         cin >> x >> y >> z;

07        x = x ^ y;

08         y = x ^ y;

09        x = x ^ y;

10        z = x / y;

11      w = z & (z-1);

12        cout << x << " "<< y << " " << z << " " << w ;

13        return 0;

14   }

 

l  判断题

1) 若输入 4 8 1,则x,y,z的输出结果为 8 4 2。                       (  )

 

2) 若输入987654321 9 1, 则输出y和z分别是 987654321 和 109739369。    (  )

 

3) 若输入9 2023 9, 则输出 w 是 192。                                (  )

 

4) 将第 1 行头文件#include<iostream>替换成#include<cstdio>,第 12 行替换为printf("%d %d %d %d\n", x, y, z, w); 程序运行结果不会改变。          (  )

 

l  选择题

5) 若输入数据为 3 11 3, 则输出为(   )。

A. 11 3 3 3     B. 11 3 3 2       C. 3 11 3 2       D. 3 11 3 3

 

6) 若将第10行 z = x / y 改成 z = x % y, 输入0 2023 9,则输出是(   )。

A. 2023 0 0 1   B. 2023 0 9   1   C. 0 2023 9   1    D. 程序出错无输出

 

2.

 

01  #include<bits/stdc++.h>

02  using namespace std;

03  int n, m, total, a[105], b[105];

04  int fun(int x, int y)

05  {

   06      if(0 == y)

   07        return 1;

   08    else

   09        return fun(x,y-1)*x;

10  }

11  int main()

12  {

   13      int j = 2;

   14      scanf("%d", &n);

   15      while(1 != n)

   16      {

   17       if(0 == n % j)

   18       {

   19           ++m;

   20        a[m] = j;

   21        while(0 == n % j)

   22           {

   23               ++b[m];

   24           n = n / j;

   25          }

   26         }

   27      ++j;

   28     }

   29     total = 1;

   30   for(int k = 1; k <= m; ++k)      

   31     {

   32       total *= (a[k]-1) * fun(a[k], b[k]-1);  

33    }             

   34      printf("%d", total);

35    return 0;

36  }

l  判断题

1) 不管 n 输入什么值, 程序的输出值 total 一定不比输入值 n 小。       (  )

 

2) 若输入 n 是一个大于 2 的质数, 则输出值 total 不可能是质数。       (  )

 

3) 若输入 n 是一个质数, 程序执行到第 29 行时, j 的值等于刚开始输入的 n。(  )

 

4) 若输入 n 的值等于某正整数 c 的正整数 d 次方cd (c, d >= 2), 程序的第 15 行循环执行完成后, m 的值为 1, a[1]的值为 c。                           (  )

 

l  选择题

5) 若输入 n = 4800 , 则输出 total 为(   )。

A. 1280 B. 640 C. 4800   D. 960

 

6) 若输出 total = 4800 , 则输入 n 可能为(   )。

A. 4800 B. 18000  C. 9000   D. 7200

 

3.

01 #include <bits/stdc++.h>

02 using namespace std;

03 char last[101], ch;

04 int main()

05 {

06        int n, length = 0;

07        scanf("%d",&n);

08        for (int i=0; i<=n; i++) {

09      cin >> ch;

10      if (ch >= last[length])

11       last[++length] = ch;

12      else if (ch < last[1])

13       last[1] = ch;

14      else {

15          int l = 1, r = length, mid;

16          while (l < r - 1) {

17             mid = (l + r) / 2;

18             if (last[mid] <= ch)

19                l = mid;

20             else r = mid;

21         }

22            last[r] = ch;

23      }

24     }

25        printf("%d\n",length);

26        return 0;

27  }

 

l  判断题

1) 要使输出等于 n,输入的所有字符必须满足第 i 个字符ASCII整数值小于第 i+1 个   字符的ASCII整数值(1 <= i <= n-1)                  (  )

 

2) 若输入数字个数超过 101 个,一定会发生数组下标溢出。            (  )

 

3) 若将第 17 行替换为 mid = l+((r-l)>>1);, 程序运行结果不会改变。  (  )

 

4) 程序运行过程中,变量 r 的值可能会等于 n。                     (  )

 

l  选择题(最后一题4分)

5) 22 last[r] = ch 最多会运行(  )次

A. 1     B. n-2 C. n-1 D. n

 

6) 若输入 n=100,且第 16 行的while循环运行了至少一次,那么输出结果不可能是( 

A. 2     B. 3       C. 98      D. 100

 

7) 若输入数据为 5 b c d a e, 则输出是(   )。

A. 4     B. 2       C. 5       D. 3


答案:------>E:\csp\初赛集训模拟题试题包\23梦熊\押题卷