#P1020. ]CSP2024] Junior组 初赛试卷

]CSP2024] Junior组 初赛试卷

题目描述

本题为 CSP-J 2024 的初赛试题。 答案来源民间,仅供参考。


来源

试题:CCF CSP 2024 Junior原版试卷扫描件

答案:bilibili @SR思睿-姜胤


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

  1. 32 位 int 类型的存储范围是? {{ select(1) }}
  • 2147483647-2147483647 ~ +2147483647+2147483647
  • 2147483647-2147483647 ~ +2147483648+2147483648
  • 2147483648-2147483648 ~ +2147483647+2147483647
  • 2147483648-2147483648 ~ +2147483648+2147483648
  1. 计算 (14810102)D1611012(14_8 - 1010_2) * D_{16} - 1101_2 的结果,并选择答案的十进制值: {{ select(2) }}
  • 1313
  • 1414
  • 1515
  • 1616
  1. 某公司有 1010 名员工,分为 33 个部门:AA 部门有 44 名员工、BB 部门有 33 名员工、CC 部门有 33 名员工。现需要从这 1010 名员工中选出4名组成一个工作小组,且每个部门至少要有 11 人。问有多少种选择方式? {{ select(3) }}
  • 120120
  • 126126
  • 132132
  1. 以下哪个序列对应数字 007744 位二进制格雷码(Gray code)? {{ select(4) }}
  • 0000, 0001, 0011, 0010, 0110, 0011, 0101, 1000
  • 0000, 0001, 0011, 0010, 0110, 0111, 0100, 0101
  • 0000, 0001, 0011, 0010, 0100, 0101, 0111, 0110
  • 0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100
  1. 记 1KB 为 1024 字节(byte)、1MB 为 1024KB,那么 1MB 是多少二进制位(bit)? {{ select(5) }}
  • 1000000
  • 1048576
  • 8000000
  • 8388608
  1. 以下哪个不是 C++ 中的基本数据类型? {{ select(6) }}
  • int
  • float
  • struct
  • char
  1. 以下哪个不是 C++ 中的循环语句? {{ select(7) }}
  • for
  • while
  • do-while
  • repeat-until
  1. 在 C/C++ 中,(char)('a'+13) 与下面的哪一个值相等? {{ select(8) }}
  • 'm'
  • 'n'
  • 'z'
  • '3'
  1. 假设有序表中有 10001000 个元素,则用二分法查找元素 xx 最多需要比较()次 {{ select(9) }}
  • 2525
  • 1010
  • 77
  • 11
  1. 下面哪一个不是操作系统名字 {{ select(10) }}
  • Notepad
  • Linux
  • Windows
  • macOS
  1. 在无向图中,所有顶点的度数之和等于 {{ select(11) }}
  • 图的边数
  • 图的边数的两倍
  • 图的顶点数
  • 图的顶点数的两倍
  1. 已知二叉树的前序遍历为 [A, B, D, E, C, F, G],中序遍历为 [D, B, E, A, F, C, G],请问该二叉树的后序遍历结果是? {{ select(12) }}
  • [D, E, B, F, G, C, A]
  • [D, E, B, F, G, A, C]
  • [D, B, E, F, G, C, A]
  • [D, E, B, F, G, A, C]
  1. 给定一个空栈,支持入栈和出栈操作。若入栈操作的元素依次是 1,2,3,4,5,61, 2, 3, 4, 5, 6,其中 11 最先入栈,66 最后入栈,下面哪种出栈顺序是不可能的 {{ select(13) }}
  • 6,5,4,3,2,16, 5, 4, 3, 2, 1
  • 1,6,5,4,3,21, 6, 5, 4, 3, 2
  • 2,4,6,5,3,12, 4, 6, 5, 3, 1
  • 1,3,5,2,4,61, 3, 5, 2, 4, 6
  1. 55 个男生和 33 个女生站成一排,规定 33 个女生必须相邻,问有多少种不同的排列方式? {{ select(14) }}
  • 43204320
  • 50405040
  • 36003600
  • 28802880
  1. 编译器的主要作用是什么? {{ select(15) }}
  • 直接执行源代码
  • 将源代码转换为机器代码
  • 进行代码调试
  • 管理程序运行时的内存

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

(1)

#include <iostream>
using namespace std;

bool isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

int countPrimes(int n) {
    int count = 0;
    for (int i = 2; i <= n; i++) {
        if (isPrime(i)) {
            count++;
        }
    }
    return count;
}

int sumPrimes(int n) {
    int sum = 0;
    for (int i = 2; i <= n; i++) {
        if (isPrime(i)) {
            sum += i;
        }
    }
    return sum;
}

int main() {
    int x;
    cin >> x;
    cout << countPrimes(x) << " " << sumPrimes(x) << endl;
    return 0;
}

判断题

  1. 当输入为 10 时,程序的第一个输出为 4,第二个输出为 17。 {{ select(16) }}
  • 正确
  • 错误
  1. 若将 isPrime(i) 函数中的条件改为 i * i <= n / 2,输入 20 时,countPrimes(20) 的输出将变为 6。 {{ select(17) }}
  • 正确
  • 错误
  1. sumPrimes 函数计算的是从 22nn 之间的所有素数之和。 {{ select(18) }}
  • 正确
  • 错误

单选题

  1. 当输入为 50 时,sumPrimes(50) 的输出为: {{ select(19) }}
  • 1068
  • 328
  • 381
  • 275
  1. 如果将 for (int i = 2; i * i <= n; i++) 改为 for (int i = 2; i <= n; i++),输入 10 时,程序的输出 {{ select(20) }}
  • 将不能正常计算 1010 以内素数个数及其和
  • 仍然输出 417
  • 输出 310
  • 输出结果不变,但运行时间更短

(2)

#include <iostream>
#include <vector>
using namespace std;

int compute(vector<int>& cost) {
    int n = cost.size();
    vector<int> dp(n+1, 0);
    dp[1] = cost[0];
    for (int i = 2; i <= n; i++) {
        dp[i] = min(dp[i-1], dp[i-2]) + cost[i-1];
    }
    return min(dp[n], dp[n-1]);
}

int main() {
    int n;
    cin >> n;
    vector<int> cost(n);
    for (int i = 0; i < n; i++)
    {
        cin >> cost[i];
    }
    cout << compute(cost) << endl;
    return 0;
}

判断题

  1. 当输入的 cost 数组为 10152010,15,20 时,程序的输出为 15 {{ select(21) }}
  • 正确
  • 错误
  1. 如果将 dp[i-1] 改为 dp[i-3],程序可能会产生编译错误 {{ select(22) }}
  • 正确
  • 错误
  1. (2分)程序总是输出 cost 数组种的最小的元素 {{ select(23) }}
  • 正确
  • 错误