#cspjmn8. CSP-J 2026 初赛模拟卷 8
CSP-J 2026 初赛模拟卷 8
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
- CCF 的中文全称是( )。 {{ select(1) }}
- A. 中国计算机协会
- B. 中国计算机行业
- C. 中国计算机学会
- D. 中国计算机公会
- 汉字输入方法实质上是对汉字进行编码,下面不是汉字输入方法的编码方式的是( )。 {{ select(2) }}
- A. 音码
- B. 形码
- C. 音形码
- D. ASCII 码
- 表达式 的后缀形式是( )。 {{ select(3) }}
- A.
- B.
- C.
- D.
- 在以下各项中,不是操作系统的是( )。 {{ select(4) }}
- A. Sybase
- B. Linux
- C. Solaris
- D. Symbian
- 二进制数 00101100 和 00010101 的和是( )。 {{ select(5) }}
- A. 00101000
- B. 01000001
- C. 01000100
- D. 00111000
- 微型计算机在工作中电源突然中断,再次通电后数据不能恢复的是( )。 {{ select(6) }}
- A. ROM 和 RAM 中的信息
- B. ROM 中的信息
- C. RAM 中的信息
- D. 硬盘中的信息
- 从一个 的棋盘(不可旋转)中选取不在同一行也不在同一列上的两个方格(不计顺序),有( )种方法。 {{ select(7) }}
- A. 72
- B. 144
- C. 256
- D. 128
- 关于汇编语言,下列说法中错误的是( )。 {{ select(8) }}
- A. 是一种与具体硬件相关的程序设计语言
- B. 在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试
- C. 可以直接访问寄存器、内存单元,以及 I/O 端口
- D. 随着高级语言的诞生,如今已完全被淘汰,不再使用
- 同时掷出 3 枚完全相同的六面骰子,每枚骰子上有 1 到 6 的数字。将得到的点数排序后,有( )种不同的结果。 {{ select(9) }}
- A. 208
- B. 56
- C. 216
- D. 120
- 某个 MV 是一段时长 4 分钟的视频文件。它每秒播放 10 帧图像,每帧图像是一幅分辨率为 2048 像素 1152 像素(长宽比为 16:9)的 32 位真彩色图像,其画面没有被压缩。这个视频没有音频。这个视频文件大约需要占用( )的存储空间。 {{ select(10) }}
- A. 21GB
- B. 27GB
- C. 168GB
- D. 2GB
- 一个有符号单字节能表达的最小二进制数是( )。 {{ select(11) }}
- A. 10000000
- B. 11111111
- C. 01111111
- D. 00000000
- 前序遍历序列与后序遍历序列相同的二叉树为( )。 {{ select(12) }}
- A. 非叶节点只有左子树的二叉树
- B. 只有根节点的二叉树
- C. 根节点无右子树的二叉树
- D. 非叶节点只有右子树的二叉树
- 下面有关数制的式子中,正确的是( )。 {{ select(13) }}
- A.
- B.
- C.
- D.
- 若对于所有规模为 的输入,一个算法均恰好进行( )次运算,则可以说该算法的时间复杂度为 。 {{ select(14) }}
- A.
- B.
- C.
- D.
- 若 ,,,则随着 的增大, 将接近于( )。 {{ select(15) }}
- A.
- B.
- C.
- D. 1
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 ✓,错误填 ✗;除特殊说明外,判断题每题 2 分,选择题每题 3 分,共计 40 分)
(1)
1 #include <iostream>
2 using namespace std;
3 int rSum(int j) {
4 int sum=0;
5 while (j != 0) {
6 sum = sum * 10 + (j % 10);
7 j = j / 10;
8 }
9 return sum;
10 }
11
12 int main() {
13 int n,m;
14 cin >> n >> m; // 保证输入为正整数,但不大于 10^8
15 for (int i=n; i<=m; i++)
16 if (i == rSum(i)) cout << i << ' ';
17 return 0;
18 }
判断题
- (1 分)主函数中的 for 循环总共执行 m-n 次。 {{ select(16) }}
- A. 正确
- B. 错误
- rSum 这个函数的返回值 sum 一定不会大于 j。 {{ select(17) }}
- A. 正确
- B. 错误
- 假设 n=1,m 足够大,则输出个数的量级逐渐趋近于 。 {{ select(18) }}
- A. 正确
- B. 错误
- 输入任意 2 个取值范围为 [1,100] 的整数,输出个数都不超过 100。 {{ select(19) }}
- A. 正确
- B. 错误
选择题
- 若输入 190 230,总共会输出( )个数。 {{ select(20) }}
- A. 1
- B. 2
- C. 3
- D. 4
- 假设 n 和 m 是相同量级(),则该算法的时间复杂度为( )。 {{ select(21) }}
- A.
- B.
- C.
- D.
(2)
1 #include <iostream>
2 #include <string>
3 using namespace std;
4 int main() {
5 string s;
6 char m1,m2;
7 getline(cin,s);
8 m1 = ' ';
9 m2 = ' ';
10 for (int i=0; i<s.length(); i++) {
11 if (s[i] > m1) {
12 m2 = m1;
13 m1 = s[i];
14 } else if (s[i] > m2)
15 m2 = s[i];
16 }
17 cout << int(m1) << ' ' << int(m2) << endl;
18 return 0;
19 }
判断题
- (1 分)getline() 会将一整行连空格一起输入到字符串中。 {{ select(22) }}
- A. 正确
- B. 错误
- 输出的两个整数不可能相同。 {{ select(23) }}
- A. 正确
- B. 错误
- 去掉 else 这几个字符,则可能出现 m2 > m1 的情况。 {{ select(24) }}
- A. 正确
- B. 错误
- 若输入长度为 10 且仅含小写字母的随机字符串,则输出结果中 m2 的值越大,其出现的可能性越小。 {{ select(25) }}
- A. 正确
- B. 错误
选择题
- 维护 m1 和 m2 的过程最接近( )。 {{ select(26) }}
- A. 选择排序
- B. 插入排序
- C. 冒泡排序
- D. 计数排序
- 若输入
mxoj is the best online judge,输出为( )。 {{ select(27) }}
- A. 120 120
- B. 120 119
- C. 120 117
- D. 122 120
(3)
1 #include <iostream>
2 using namespace std;
3 int n,p,a;
4 int main() {
5 cin >> n; // 保证输入在 int 范围内
6 while (n > 1) {
7 for (p=2; p<=n; p++)
8 if (n % p == 0) break;
9 for (a=0; n%p==0; n/=p) a++;
10 cout << p << " " << a <<endl;
11 }
12 return 0;
13 }
判断题
- 若输入正整数,则程序在有限步内一定会结束。 {{ select(28) }}
- A. 正确
- B. 错误
- 如有输出,输出的 a 永远是正的。 {{ select(29) }}
- A. 正确
- B. 错误
- 最坏情况下程序的时间复杂度为 。 {{ select(30) }}
- A. 正确
- B. 错误
- 输出的 p 是逐行严格递增的。 {{ select(31) }}
- A. 正确
- B. 错误
选择题
- 若输入 72,则共输出( )个数。 {{ select(32) }}
- A. 1
- B. 2
- C. 3
- D. 4
- 对 依次运行以上程序,输出的总行数最接近( )。 {{ select(33) }}
- A. 50
- B. 100
- C. 150
- D. 200
三、完善程序(单选题,每小题 3 分,共计 30 分)
(1)
(子矩阵)输入一个 的矩阵 和一个 的矩阵 ,问 中是否存在一个子矩阵和 相等;若存在,则输出所有子矩阵左上角的坐标;若不存在,则输出 There is no answer。子矩阵指从 中选出连续的 行和 列。相等指每个对应位置的值相等。
样例输入:4 5 1 4 3 2 5 5 6 3 2 1 2 4 5 6 8 3 5 4 3 2 2 3 6 3 2 4 5 6
样例输出:2 2
1 #include <iostream>
2 using namespace std;
3 const int SIZE = 50;
4 int n1, m1, n2, m2, a[SIZE][SIZE], b[SIZE][SIZE];
5 int main() {
6 int i, j, k1, k2;
7 bool good, haveAns;
8 cin >> n1 >> m1;
9 for(i = 1; i <= n1; i++)
10 for(j = 1; j <= m1; j++) cin >> a[i][j];
11 cin >> n2 >> m2;
12 for(i = 1; i <= n2; i++)
13 for(j = 1; j <= m2; j++) cin >> b[i][j];
14 ①;
15 for (i = 1; i <= n1 - n2 + 1; i++)
16 for (j = 1; j <= ②; j++) {
17 ③;
18 for (k1 = 1; k1 <= n2; k1++)
19 for (k2 = 1; k2 <= m2; k2++) {
20 if (④ != b[k1][k2])
21 good = false;
22 }
23 if (good) {
24 cout << i << ' ' << j << endl;
25 ⑤;
26 }
27 }
28 if (!haveAns)
29 cout << "There_is_no_answer" << endl;
30 return 0;
31 }
- ① 处应填( )。 {{ select(34) }}
- A.
haveAns = true - B.
haveAns = false - C.
good = true - D.
good = false
- ② 处应填( )。 {{ select(35) }}
- A.
n1 + n2 - 1 - B.
m1 - m2 + 1 - C.
n1 - m1 + 1 - D.
m1 + m2 - 1
- ③ 处应填( )。 {{ select(36) }}
- A.
haveAns = true - B.
haveAns = false - C.
good = true - D.
good = false
- ④ 处应填( )。 {{ select(37) }}
- A.
a[i + k1 - 1][j + k2 - 1] - B.
a[i + k1][j + k2] - C.
a[i - k1 - 1][j - k2 - 1] - D.
a[i - k1][j - k1]
- ⑤ 处应填( )。 {{ select(38) }}
- A.
haveAns = true - B.
haveAns = false - C.
good = true - D.
good = false
(2)
(高精度加法)输入两个大数,位数不超过 100(保证首位不是 0)。使用数组存储大整数,数组的每个元素存储一位数,输出两数之和。
样例输入:1234567 2345678
样例输出:3580245
1 #include <iostream>
2 #include <string>
3 #define SIZE 200
4 using namespace std;
5
6 int x[2][SIZE]; // x[0], x[1] 存放两个加数
7
8 void converts(int d,string s) {
9 int i,len = ①;
10 for (i=0; i<len; i++)
11 x[d][i] = s[len-i-1] - '0';
12 }
13
14 void add() {
15 for (int i=0;i<SIZE;i++) {
16 x[0][i] += x[1][i];
17 if (②) {
18 x[0][i+1]++;
19 ③;
20 }
21 }
22 }
23
24 void print(int d) {
25 int i;
26 for (i=SIZE-1; i>0; i--)
27 if (x[d][i]) ④;
28 for (; i>=0; i--) cout << x[d][i];
29 cout<<endl;
30 }
31
32 int main() {
33 string s1,s2;
34 cin>>s1>>s2;
35 converts(0,s1);
36 converts(1,s2);
37 add();
38 ⑤;
39 return 0;
40 }
- ① 处应填( )。 {{ select(39) }}
- A. 0
- B. 1
- C.
s.length() - D.
s.length()-1
- ② 处应填( )。 {{ select(40) }}
- A.
x[0][i]>=10 - B.
x[0][i]>10 - C.
x[1][i]>=10 - D.
x[1][i]>10
- ③ 处应填( )。 {{ select(41) }}
- A.
x[0][i]+=10 - B.
x[0][i]-=10 - C.
x[1][i]+=10 - D.
x[1][i]-=10
- ④ 处应填( )。 {{ select(42) }}
- A.
return - B.
continue - C.
cout<<x[d][i] - D.
break
- ⑤ 处应填( )。 {{ select(43) }}
- A.
print(0) - B.
print(1) - C.
print(2) - D.
print(3)