普及组 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. 以下逻辑表达式里面不管A,B如何取值恒为真的是?( )
A. (¬A∧B)∨(A∧B)∨A
B. (¬A∧B)∨(A∧¬B)∨B
C. (¬A∧B)∨(A∧¬B)∨B∨A
D. (¬A∧B)∨(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梦熊\押题卷