#J0005. CSP-J 2025 初赛模拟卷 5

CSP-J 2025 初赛模拟卷 5

CSP-J 2025初赛模拟卷 5

一、单项选择题(每题 2 分,共 30 分)

第 1 题 十进制数 2m5 的十六进制表示是( )。
{{ select(1) }}

  • 07D9
  • 07E9
  • 07F9
  • 07F1

第 2 题 以下关于计算机竞赛 I/OI 的描述正确的是( )。
{{ select(2) }}

  • I/OI 非英语国家参赛选手可以在比赛中携带电子词典
  • I/OI 参赛选手可携带已关机的手机放在自己座位后面的包里
  • I/OI 参赛选手在比赛时间内去厕所的时候可携带手机
  • I/OI 全称是国际信息学奥林匹克竞赛

第 3 题 以下不能用 ASCII 码表示的字符是( )。
{{ select(3) }}

  • @
  • ^
  • ~

第 4 题 设变量 s 为 double 型且已赋值,下列哪条语句能将 s 中的数值保留到小数点后一位,并将第二位四舍五入?( )。
{{ select(4) }}

  • s = (x * 10 + 0.5) / 10.0
  • s = s * 10 + 0.5 / 10.0
  • s = (s / 10 + 0.5) * 10.0
  • s = (int(s * 10 + 0.5) / 10.0

第 5 题 以下不属于 STL 链表中的函数的是( )。
{{ select(5) }}

  • sort
  • empty
  • push_back

第 6 题 小明写了一个程序,在这里用到的数据结构是( )。

#include 
using namespace std;
int k;
int f(int a) {
    if (a - k == 0 || (a - k) % 2 == 0)
        return f((a + k) / 2) + f((a - k) / 2);
    else
        return 1;
}
int main() {
    int n;
    cin >> n >> k;
    if ((n + k) % 1 == 0)
        cout 
using namespace std;

int solve(vector nums) {
    map cnt;
    int tot = 0;
    for (auto v : nums) {
        cnt[v]++;
        tot += v;
    }
    int ans = -1e5;
    for (auto v : nums) {
        cnt[v]--;
        if ((tot - v) % 2 == 0 && cnt[(tot - v) / 2] > 0)
            ans = max(ans, v);
        cnt[v]++;
    }
    return ans;
}

int main() {
    int n;
    cin >> n;
    vector a(n);
    for (int i = 0; i > a[i];
    cout ` 换为 ``,程序依然可以正常运行。( )  
{{ select(18) }}  
-  对 
-  错 

**选择题**  
19. 若输入 86 -315 -354137 -4213,则输出是( )。  
{{ select(19) }}  
-  13  
-  -35  
-  -31  
-  -17  

20. 如果去除第 19 行的代码,对于输入 423510,则输出是( )。  
{{ select(20) }}  
-  2  
-  5  
-  10  
-  -10  

### (2)
```cpp
#include 
using namespace std;

const int inf = 0x3f3f3f3f;

int solve(vector words, string target) {
    const int n = target.length();
    set s;
    for (auto v : words)
        for (int i = 1; i  dp(n + 1, inf);
    dp[0] = 0;
    for (int i = 0; i > n;
    vector a(n);
    for (int i = 0; i > a[i];
    string t;
    cin >> t;
    cout 
using namespace std;

int calc(int n, int presses) {
    set seen;
    for (int i = 0; i  pressArr(4);
        for (int j = 0; j > j) & 1;
        int sum = 0;
        for (int j = 0; j = 3)
                status |= (pressArr[0] ^ pressArr[2]) > n >> presses;
    cout 
using namespace std;

const int inf = 0x3f3f3f3f;

void solve() {
    int n;
    cin >> n;
    vector a(n + 1);
    for (int i = 1; i > a[i];
    vector dp(n + 1);
    for (int i = 1; i > t;
    while (t--)
        solve();
    return 0;
}
  1. ①处应填( )。
    {{ select(33) }}
  • lst(n + 1)
  • lst(n + 1, 0)
  • lst(n + 1, inf)
  • lst(n + 1, -inf)
  1. ②处应填( )。
    {{ select(34) }}
  • dp[i - 1]
  • dp[i] - 1
  • dp[i + 1]
  • dp[i] + 1
  1. ③处应填( )。
    {{ select(35) }}
  • lst[a[i]]
  • lst[a[i]] + i
  • lst[a[i]] + i + 1
  • lst[i] + i
  1. ④处应填( )。
    {{ select(36) }}
  • dp[i - 1] - i
  • dp[i - 1] + i
  • dp[i + 1] - i
  • dp[i + 1] + i
  1. ⑤处应填( )。
    {{ select(37) }}
  • dp[1]
  • dp[0]
  • dp[n - 1]
  • dp[n]

(2) 题目描述

输入 n (1 ≤ n ≤ 1 × 10^5) 和长为 n 的数组 a (0 ≤ a[i] using namespace std;

void solve() { int n; cin >> n; vector a(n + 1); for (int i = 1; i > a[i]; int ans = ⑦; for (int i = 0; ①; i++) { int cnt = 0, lst = ⑦; for (int j = 1; j > t; while (t--) solve(); return 0; }


38. ①处应填( )。  
{{ select(38) }}  
-  i  20  
-  i != 20  

39. ②处应填( )。  
{{ select(39) }}  
-  !(a[i] & (1  n  

42. ⑤处应填( )。  
{{ select(42) }}  
-  ans  
-  min(ans, n)  
-  min((ans == 0 ? 1 : ans), n)  
-  (ans == 0 ? 1 : ans)