林老师 · 客观题题库 · CSP-J 卷

CSP-J 卷

· 共 29 题 · 由简到难 · 建议 44 分钟
真题
复刻
试卷编号OBJ-797014
题目总数29 题 · 58 分
试卷类型客观题
考生须知:
① 本卷为客观题单卷,合计 29 题 · 58 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 58 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

客 观 题

29 QUESTIONS · 2 POINTS EACH
第 1 题 单选 未作答

下面 C++ 代码执行后的输出是( )。

01int m = 14;
02int n = 12;
03if (m % 2 == 0 && n % 2 == 0)
04    cout << "都是偶数";
05else if (m % 2 == 1 && n % 2 == 1)
06    cout << "都是奇数";
07else
08    cout << "不都是偶数或奇数";

(2 分)
GESP 一级 2023-09 · 单选 第7题 | 知识点 程序阅读与输出推断、if-else、逻辑运算
第 2 题 单选 未作答

执行以下 C++ 语言程序后,输出结果是( )。

01#include <iostream>
02using namespace std;
03int main() {
04    int sum = 0;
05    for (int i = 1; i <= 20; i++)
06        if (i % 3 == 0 || i % 5 == 0)
07            sum += i;
08    cout << sum << endl;
09    return 0;
10}

(2 分)
GESP 一级 2023-03 · 单选 第15题 | 知识点 程序阅读与输出推断、for循环、逻辑运算
第 3 题 单选 未作答

假设现在是上午十点,求出 N 小时(正整数)后是第几天几时,如输入 20 小时则为第 226 点,如 N 输入 4 则为今天 14 点。为实现相应功能,应在横线处填写代码是( )。

01int N, dayX, hourX;
02
03cin >> N;
04
05dayX = ____________, hourX = ____________;
06if (dayX == 0)
07    cout << "今天" << hourX << "点";
08else
09    cout << "第" << (dayX + 1) << "天" << hourX << "点";

(2 分)
GESP 一级 2023-12 · 单选 第3题 | 知识点 程序补全、算术运算、整型除法
第 4 题 单选 未作答

在下列代码的横线处填写( ),使得输出是 20 10

01#include <iostream>
02using namespace std;
03int main() {
04    int a = 10, b = 20;
05    a = ____________; // 在此处填入代码
06    b = a + b;
07    a = b - a;
08    cout << a << " " << b << endl;
09    return 0;
10}

(2 分)
GESP 一级 2023-06 · 单选 第13题 | 知识点 程序补全、算术运算
第 5 题 单选 未作答

下面 C++ 代码第 22 行,总共被执行次数是( )。

01for (int i = -10; i < 10; i++)
02    cout << i << " ";

(2 分)
GESP 一级 2024-03 · 单选 第7题 | 知识点 程序阅读与输出推断、for循环
第 6 题 单选 未作答

下面的 C++ 代码执行时如果先输入 10 回车后输入 20 并回车,其输出是( )。

01int N, M;
02printf("第一个数:");
03scanf("%d", &N);
04printf("第二个数:");
05scanf("%d", &M);
06printf("%%(N+M)=%d", N+M, int(N+M));

(2 分)
GESP 一级 2025-12 · 单选 第7题 | 知识点 程序阅读与输出推断、scanf与printf、格式化输出
第 7 题 单选 未作答

在 C++ 中,执行 int x = 255; cout << (x & (x - 1)); 后,输出的结果是?( )

(2 分)
CSP-J 2025 · 单选 第2题 | 知识点 泛洪算法、泛洪算法
第 8 题 单选 未作答

在 C++ 中,以下哪个函数调用会造成栈溢出?( )

(2 分)
CSP-S 2024 · 单选 第3题 | 知识点 三目运算、归并排序、栈
第 9 题 单选 未作答

如果 achar 类型的变量,且 a 的值为 'C'(已知 'C' 的 ASCII 码为 67),则执行 cout << (a + 2); 会输出( )。

(2 分)
GESP 二级 2023-06 · 单选 第10题 | 知识点 字符型、字符ASCII运算、cin与cout、程序阅读与输出推断
第 10 题 单选 未作答

下面 C++ 代码执行后的输出是( )。

01int cnt = 0;
02for (int i = 1; i < 9; i++)
03    for (int j = 1; j < i; j += 2)
04        cnt += 1;
05cout << cnt;

(2 分)
GESP 二级 2023-09 · 单选 第10题 | 知识点 程序阅读与输出推断、嵌套循环、for循环
第 11 题 单选 未作答

下面 C++ 代码执行后的输出是( )。

01char ch[10]={'1'};
02cout<<ch[2]<<endl;

(2 分)
GESP 三级 2023-12 · 单选 第8题 | 知识点 字符数组、程序阅读与输出推断
第 12 题 单选 未作答

一个 int 类型的值,做以下哪个操作,一定会变回原来的值?( )

(2 分)
GESP 三级 2023-06 · 单选 第10题 | 知识点 位异或、移位运算、程序阅读与输出推断
第 13 题 单选 未作答

在下列代码的横线处填写( ),可以使得输出是"2"。

01#include <iostream>
02using namespace std;
03int main() {
04    int array[5] = {3, 7, 5, 2, 4};
05    int min = 0;
06    for (int i = 0; i < 5; i++)
07        if (____________) // 在此处填写代码
08            min = array[i];
09    cout << min << endl;
10    return 0;
11}

(2 分)
GESP 三级 2023-06 · 单选 第14题 | 知识点 一维数组、程序补全
第 14 题 单选 未作答

执行下面 C++ 代码后输出的是( )。

01string str=("chen");
02cout<<str[5]<<endl;

(2 分)
GESP 三级 2023-12 · 单选 第7题 | 知识点 string类、数组越界、程序阅读与输出推断
第 15 题 单选 未作答

一个数组定义为 int a[5] = {1, 2, 3, 4, 5};,一个指针定义为 int * p = &a[2];,则执行 a[1] = *p; 后,数组 a 中的值会变为( )。

(2 分)
GESP 四级 2023-06 · 单选 第11题 | 知识点 程序阅读与输出推断、指针、一维数组
第 16 题 单选 未作答

在 C++ 中,执行下面代码后,输出的是( )。

01int point(int *p)
02{
03    return *p**p;
04}
05int main()
06{
07    int a=20;
08    int *p=&a;
09    *p=point(p);
10    cout<<*p<<endl;
11}

(2 分)
GESP 四级 2023-12 · 单选 第7题 | 知识点 程序阅读与输出推断、指针
第 17 题 单选 未作答

在下列代码的横线处填写( ),可以使得输出是"20 10"。

01#include <iostream>
02using namespace std;
03void xchg(____________) { // 在此处填入代码
04    int t = *x;
05    *x = *y;
06    *y = t;
07}
08int main() {
09    int a = 10, b = 20;
10    xchg(&a, &b);
11    cout << a << " " << b << endl;
12    return 0;
13}

(2 分)
GESP 四级 2023-06 · 单选 第13题 | 知识点 程序补全、指针、值传递与引用传递
第 18 题 单选 未作答

假设给定链表为:1357nullptr1 \to 3 \to 5 \to 7 \to \text{nullptr},若调用 searchValue(head, 5),函数返回值为( )。

01int searchValue(ListNode* head, int target) {
02    while (head != nullptr) {
03        if (head->val == target) {
04            return 1;
05        }
06        head = head->next;
07    }
08    return 0;
09}

(2 分)
GESP 五级 2024-03 · 单选 第15题 | 知识点 单向链表、程序阅读与输出推断
第 19 题 单选 未作答

若有如下程序段,其中 sabc 均已定义为整型变量,且 ac 均已赋值(c>0c > 0):

01s = a;
02for (b = 1; b <= c; b++) s = s - 1;

则与上述程序段功能等价的赋值语句是( )。

(2 分)
CSP-J 2019 · 单选 第4题 | 知识点 程序阅读与输出推断、for循环、算术运算
第 20 题 单选 未作答

AAnn 个实数的数组,考虑下面的递归算法:

XYZ(A[1..n])
1 if n = 1 then return A[1]
2 else temp ← XYZ(A[1..n-1])
3      if temp < A[n]
4          then return temp
5          else return A[n]

请问算法 XYZ 的输出是什么?( )

(2 分)
CSP-J 2020 · 单选 第6题 | 知识点 程序阅读与输出推断、递归、一维数组
第 21 题 单选 未作答

考虑如下递归算法

01solve(n)
02    if n<=1 return 1
03    else if n>=5 return n*solve(n-2)
04    else return n*solve(n-1)

则调用 solve(7) 得到的返回结果为( )。

(2 分)
CSP-J 2021 · 单选 第13题 | 知识点 程序阅读与输出推断、递归函数、递归
第 22 题 单选 未作答

运行以下代码片段的行为是( )。

01int x = 101;
02int y = 201;
03int *p = &x;
04int *q = &y;
05p = q;

(2 分)
CSP-J 2022 · 单选 第3题 | 知识点 程序阅读与输出推断、指针
第 23 题 单选 未作答

考虑以下 C++ 函数:

1  void solve(int &a, int b) {
2      a = a + b;
3      b = a - b;
4      a = a - b;
5  }
6  int main() {
7      int x = 5, y = 10;
8      solve(x, y);
9  }

mainmain 函数调用 solvesolve 后,xxyy 的值分别是?( )

(2 分)
CSP-J 2025 · 单选 第10题 | 知识点 三目运算、位与
第 24 题 单选 未作答

函数 calc(n) 的定义如下,则 calc(5) 的返回值是多少?( )

1  int calc(int n) {
2      if (n <= 1) return 1;
3      if (n % 2 == 0) return calc(n / 2) + 1;
4      else return calc(n - 1) + calc(n - 2);
5  }

(2 分)
CSP-J 2025 · 单选 第3题 | 知识点 归并排序、归并排序
第 25 题 单选 未作答

斐波那契数列的定义为:F1=1F_1=1F2=1F_2=1Fn=Fn1+Fn2F_n=F_{n-1}+F_{n-2}n3n\ge3)。现在用如下程序来计算斐波那契数列的第 nn 项,其时间复杂度为( )。

01F(n):
02    if n<=2 return 1
03    else return F(n-1) + F(n-2)

(2 分)
CSP-S 2021 · 单选 第12题 | 知识点 归并排序、归并排序、排序稳定性
第 26 题 单选 未作答

下面代码执行后的输出是( )。

01#include <iostream>
02using namespace std;
03
04int jumpFloor(int N) {
05    cout << N << "#";
06    if (N == 1 || N == 2) {
07        return N;
08    } else {
09        return jumpFloor(N - 1) + jumpFloor(N - 2);
10    }
11}
12int main() {
13    cout << jumpFloor(4) << endl;
14    return 0;
15}

(2 分)
GESP 五级 2023-09 · 单选 第10题 | 知识点 递归、程序阅读与输出推断
第 27 题 单选 未作答

下面的 C++ 代码用于将字符串保存到带头节点的双向链表中,并对重复的串计数,然后将最新访问的串的节点放在链头便于查找。横线处应填入代码是( )。

01typedef struct Node{
02    string str;
03    int ref;
04    struct Node *next, *prev;
05}Node;
06Node * Insert(Node *pHead, string s)
07{
08    Node *p = pHead->next;
09    Node *q;
10    while(p) {
11        if(p->str == s) {
12            p->ref++;
13            p->next->prev = p->prev;
14            p->prev->next = p->next;
15            break;
16        }
17        p=p->next;
18    }
19    if(!p) {
20        p = new Node;
21        p->str = s;
22        p->ref=0;
23        p->next = p->prev = NULL;
24    }
25    ____________
26    pHead->next = p, p->prev = pHead;
27    return pHead;
28}

(2 分)
GESP 五级 2023-12 · 单选 第5题 | 知识点 双向链表、程序补全
第 28 题 单选 未作答

在双向链表头部插入一个新节点,为了保持链表结构正确,横线上应填入的代码为( )。

01void insert(dl_node *head, string my_song) {
02    p = new dl_node;
03    p->song = my_song;
04    p->prev = nullptr;
05    p->next = head;
06
07    if (head != nullptr) {
08        ____________ // 在此处填入代码
09    }
10    head = p;
11}

(2 分)
GESP 五级 2024-06 · 单选 第4题 | 知识点 双向链表、程序补全
第 29 题 单选 未作答

下⾯程序的时间复杂度为( )。

01int fib(int n) {
02    if (n <= 1)
03        return 1;
04    return fib(n - 1) + fib(n - 2);
05}

(2 分)
GESP 八级 2024-03 · 单选 第10题 | 知识点 时间复杂度、递归、程序阅读与输出推断