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