#J0007. CSP-J2025 初赛模拟卷7

CSP-J2025 初赛模拟卷7

CSP-J 2025初赛模拟卷 7

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

第 1 题 十进制数 255 用二进制表示是( )。
{{ select(1) }}

  • 10000000101
  • 10000010101
  • 10000001101
  • 10000100101

第 2 题 C++ 语言的创始人是( )。
{{ select(2) }}

  • 林纳斯·托瓦茨
  • 丹尼斯·里奇
  • 吉多·范罗苏姆
  • 本贾尼·斯特劳斯特卢普

第 3 题 以下设备中,( )不是输出设备。
{{ select(3) }}

  • 扫描仪
  • 触摸屏
  • 绘图仪
  • 音箱

第 4 题 当执行以下 C++ 程序段后输出结果为( )。

char c1 = '2' + 1;
char c2 = '2' + 15;
cout  5 的概率为( )。  
{{ select(12) }}  
-  3/5  
-  1/2  
-  2/3  
-  1/3  

**第 13 题** 四位同学进行篮球传球练习,要求每个人接球后再传给别人。开始时甲同学发球,并作为第一次传球,第五次传球后,球又回到甲同学手中,则不同的传球方法有( )种。  
{{ select(13) }}  
-  60  
-  65  
-  70  
-  75  

**第 14 题** 字符串 "cCCsSsPPP" 共有( )种不同的非空子串。  
{{ select(14) }}  
-  45  
-  36  
-  37  
-  39  

**第 15 题** 向一个栈顶指针为 head 的链式栈中插入一个指针 p 指向的节点时,应执行( )。  
{{ select(15) }}  
-  head->next = p;  
-  p->next = head; head = p;  
-  p->next = head->next; head->next = p;  
-  p->next = head; head = head->next;  

## 二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 V,错误填 ×)

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

int t, p, a, b, c;
int f(int a, int b) {
    if (a % b == 0)
        return 0;
    return b - a % b;
}

void solve() {
    scanf("%d%d%d%d", &p, &a, &b, &c);
    printf("%d\n", min(min(f(p, a), f(p, b)), f(p, c)));
}

int main() {
    scanf("%d", &t);
    while (t--)
        solve();
    return 0;
}

判断题
16. 若程序输入

1
2 6 10 9

则最终输出为 4。( )
17. (2分) 若将第 5 行删除,程序的输出结果一定不会改变。( )
18. 若将头文件 改成,程序仍能正常运行。( )

选择题
19. 若程序输入 2954810999,则输出是( )。
{{ select(19) }}

  • 18
  • 11
  • 08
  • 01
  1. (4分) 若将第 10 行的输出内容改为 f(f(f(p, a), b), c),则输入
1 2 6 10 9

时,输出是( )。
{{ select(20) }}

  • 3
  • 4
  • 5
  • 6

(2)

#include 
using namespace std;
const int N = 2e5 + 5;

int a, b, n, k;
char s[N];

void solve(int a, int b, int k) {
    while (k--) {
        putchar(a ? '1' : '0');
        a ^= 1;
    }
}

int main() {
    cin >> a >> b >> k;
    n = a + b;
    for (int i = 1; i  k)
        --n;
    if (n 
using namespace std;
const int N = 2e5 + 5;

int n, m, ans, pos[2][N];
char a[N], b[N];

int main() {
    scanf("%d%d%s%s", &n, &m, a, b);
    reverse(a, a + n);
    reverse(b, b + m);
    for (int i = 0, now = 0; i 
using namespace std;
const int N = 2e5 + 5;

int n, X, a[N], cnt[N], dp[N];

int main() {
    cin >> n >> X;
    for (int i = 1; i > a[i];
    int l = 1, r = 0, sum = 0;
    while (l = l; i--)
            if (cnt[i] == n + 1)
                dp[i] = ④;
        sum += dp[i];
    }
    cout  x  
-  sum  x  

34. ②处应填( )。  
{{ select(34) }}  
-  sum += a[++r]  
-  sum += a[r++]  
-  sum -= a[++r]  
-  sum -= a[r++]  

35. ③处应填( )。  
{{ select(35) }}  
-  sum -= a[r--]  
-  sum -= a[--r]  
-  sum -= a[++r]  
-  sum -= a[r++]  

36. ④处应填( )。  
{{ select(36) }}  
-  dp[cnt[i]] + 1  
-  dp[cnt[i] + 1] + 1  
-  dp[cnt[i + 1]] + 1  
-  dp[cnt[i + 1] + 1] + 1  

37. ⑤处应填( )。  
{{ select(37) }}  
-  dp[1]  
-  n - dp[1]  
-  n * (n + 1) / 2 - sum  
-  sum  

### (2) 题目描述  
一个字符串 `s` (`|s| 
using namespace std;
const int N = 505;

char s[N];
int n, f[N][N], dp[N][N];

bool check(int l, int r) {
    if (①)
        return f[l][r];
    if (l >= r)
        return f[l][r] = 1;
    if (s[l] != s[r])
        return f[l][r] = 0;
    return f[l][r] = ②;
}

int main() {
    memset(f, -1, sizeof(f));
    scanf("%s", s + 1);
    n = strlen(s + 1);
    for (int i = 1; i  1  
-  r - l > 1  

39. ②处应填( )。  
{{ select(39) }}  
-  check(l + 1, r - 1)  
-  check(l + 1, r) + 1  
-  f[l + 1][r - 1] + 1  
-  f[l + 1][r] + 1  

40. ③处应填( )。  
{{ select(40) }}  
-  dp[i][i] = 1  
-  dp[i][i + 1] = 1  
-  dp[i][i + 1] = (s[i] == s[i + 1]) + 2  
-  dp[i][i + 1] = s[i] == s[i + 1]  

41. ④处应填( )。  
{{ select(41) }}  
-  dp[i + 1][j] + dp[i][j - 1] + dp[i + 1][j - 1]  
-  dp[i + 1][j] + dp[i][j - 1] - dp[i + 1][j - 1]  
-  dp[i + 1][j] + dp[i][j - 1] + (s[i] == s[j])  
-  dp[i + 1][j] + dp[i][j - 1] - (s[i] == s[j])  

42. ⑤处应填( )。  
{{ select(42) }}  
-  dp[i][j] += dp[i + 1][j - 1]  
-  dp[i][j] += dp[i + 1][j] + dp[i][j - 1] - dp[i + 1][j - 1]  
-  dp[i][j] += dp[i + 1][j] + dp[i][j - 1] + (s[i] == s[j])  
-  dp[i][j] += dp[i + 1][j] + dp[i][j - 1] - (s[i] == s[j])