#CSP0014. CSP-J 2026 初赛模拟试卷 八

CSP-J 2026 初赛模拟试卷 八

  1. CCF的中文全称是( {{ select(1) }}
  • 中国计算机协会
  • 中国计算机行会
  • 中国计算机学会
  • 中国计算机公会

  1. 汉字输入方法实质上是对汉字进行编码,下面不是汉字输入方法的编码方式的是()。 {{ select(2) }}
  • 音码
  • 形码
  • 音形码
  • ASCII码

  1. 表达式 a*(b+c)*d 的后缀形式是( {{ select(3) }}
  • a b c d * * *
  • a b c + * * d
  • a * b c + * d
  • b + c * a * d

  1. 在以下各项中,不是操作系统的是()。 {{ select(4) }}
  • Sybase
  • Linux
  • Solaris
  • Symbian

  1. 二进制数00101100和00010101的和是( {{ select(5) }}
  • 00101000
  • 01000001
  • 01000100
  • 00111000

  1. 微型计算机在工作中电源突然中断,再次通电后数据不能恢复的是()。 {{ select(6) }}
  • ROM和RAM中的信息
  • ROM中的信息
  • RAM中的信息
  • 硬盘中的信息

  1. 从一个 (4\times 4) 的棋盘(不可旋转)中选取不在同一行也不在同一列上的两个方格(不计顺序),有()种方法。 {{ select(7) }}
  • 72
  • 144
  • 256
  • 128

  1. 关于汇编语言,下列说法中错误的是()。 {{ select(8) }}
  • 是一种与具体硬件相关的程序设计语言
  • 在编写复杂程序时,相对于高级语言而言代码量较大,且不易调试
  • 可以直接访问寄存器、内存单元,以及I/O端口
  • 随着高级语言的诞生,如今已完全被淘汰,不再使用

  1. 同时掷出3枚完全相同的六面骰子,每枚骰子上有1到6的数字。将得到的点数排序后,有()种不同的结果。 {{ select(9) }}
  • 208
  • 56
  • 216
  • 120

  1. 某个MV是一段时长4分钟的视频文件。它每秒播放10帧图像,每帧图像是一幅分辨率为2048像素 ×\times 1152像素(长宽比为 (16:9) )的32位真彩色图像,其画面没有被压缩。这个视频没有音频。这个视频文件大约需要占用()的存储空间。 {{ select(10) }}
  • 21GB
  • 27GB
  • 168GB
  • 2GB

  1. 一个有符号单字节能表达的最小二进制数是( )。 {{ select(11) }}
  • 10000000
  • 11111111
  • 01111111
  • 00000000

  1. 前序遍历序列与后序遍历序列相同的二叉树为( )。 {{ select(12) }}
  • 非叶节点只有左子树的二叉树
  • 只有根节点的二叉树
  • 根节点无右子树的二叉树
  • 非叶节点只有右子树的二叉树

  1. 下面有关数制的式子中,正确的是( )。 {{ 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})

  1. 若对于所有规模为 (n) 的输入,一个算法均恰好进行( )次运算,则可以说该算法的时间复杂度为 (O(2^{n})) 。 {{ select(14) }}
  • (2^{n+1})
  • (3^{n})
  • (n\times 2^{n})
  • (2^{2n})

  1. 若 (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. (1分)主函数中的for循环总共执行 (m - n) 次。 {{ select(16) }}
  • 正确
  • 错误

  1. rSum这个函数的返回值sum一定不会大于j。 {{ select(17) }}
  • 正确
  • 错误

  1. 假设 (n = 1) ,m足够大,则输出个数的量级逐渐趋近于 (O(m^{0.5})) 。 {{ select(18) }}
  • 正确
  • 错误

  1. 输入任意两个取值范围为[1,100]的整数,输出个数都不超过100。 {{ select(19) }}
  • 正确
  • 错误

  1. 若输入190230,总共会输出()个数。 {{ select(20) }}
  • 1
  • 2
  • 3
  • 4

  1. 假设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. (1分)getline()会将一整行连带空格一起输入到字符串中。 {{ select(22) }}
  • 正确
  • 错误

  1. 输出的两个整数不可能相同。 {{ select(23) }}
  • 正确
  • 错误

  1. 去掉else这几个字符,则可能出现 (m2 > m1) 的情况。 {{ select(24) }}
  • 正确
  • 错误

  1. 若输入长度为10且仅含小写字母的随机字符串,则输出结果中 (m2) 的值越大,其出现的可能性越小。 {{ select(25) }}
  • 正确
  • 错误

  1. 维护 m1 和 m2 的过程最接近( )。 {{ select(26) }}
  • 选择排序
  • 插入排序
  • 冒泡排序
  • 计数排序

  1. 若输入 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;
}
  1. 若输入正整数,则程序在有限步内一定会结束。 {{ select(28) }}
  • 正确
  • 错误

  1. 如有输出,输出的a永远是正的。 {{ select(29) }}
  • 正确
  • 错误

  1. 最坏情况下程序的时间复杂度为 (O(n^2)) 。 {{ select(30) }}
  • 正确
  • 错误

  1. 输出的p是逐行严格递增的。 {{ select(31) }}
  • 正确
  • 错误

  1. 若输入72,则共输出()个数。 {{ select(32) }}
  • 1
  • 2
  • 3
  • 4

  1. 对 (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;
}
  1. ①处应填( {{ select(34) }}
  • haveAns = true
  • haveAns = false
  • good = true
  • good = false

  1. ②处应填( {{ select(35) }}
  • n1 + n2 - 1
  • m1 - m2 + 1
  • n1 - m1 + 1
  • m1 + m2 - 1

  1. ③处应填( {{ select(36) }}
  • haveAns = true
  • haveAns = false
  • good = true
  • good = false

  1. ④处应填( {{ 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]

  1. ⑤处应填( {{ select(38) }}
  • haveAns = true
  • haveAns = false
  • good = true
  • good = 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;
}
  1. ①处应填( {{ select(39) }}
  • 0
  • 1
  • s.length()
  • s.length() - 1

  1. ②处应填( {{ select(40) }}
  • x[0][i] >= 10
  • x[0][i] > 10
  • x[1][i] >= 10
  • x[1][i] > 10

  1. ③处应填( {{ select(41) }}
  • x[0][i] += 10
  • x[0][i] -= 10
  • x[1][i] += 10
  • x[1][i] -= 10

  1. ④处应填( {{ select(42) }}
  • return
  • continue
  • cout << x[d][i]
  • break

  1. ⑤处应填( {{ select(43) }}
  • print(0)
  • print(1)
  • print(2)
  • print(3)