#3527. 乔斯2024 CSP-J 初赛模拟赛(十三)

乔斯2024 CSP-J 初赛模拟赛(十三)

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

  1. 在 C++ 中,下面哪个关键字用于声明一个变量, 其值不能被修改?

{{ select(1) }}

  • unsigned
  • const
  • static
  • mutable
  1. 八进制数 12345670807654321812345670_8和 07654321_8的和为

{{ select(2) }}

  • 222222218 22222221_8
  • 211111118 21111111_8
  • 221111118 22111111_8
  • 222222118 22222211_8
  1. 阅读下述代码,请问修改 datavalue 成员以存储 3.14,正确的方式是 image

{{ select(3) }}

  • data.value = 3.14;
  • value.data = 3.14;
  • data -> value = 3.14;
  • value->data = 3.14;

4.假设有一个链表的节点定义如下:

struct Node { int data; Node* next; }

现在有一个指向链表头部的指针:Node* head。如果想要在链表中插入一个新节点,其成员 data 的值为 42,并使新节点成为链表的第一个节点,下面哪个操作是正确的?

{{ select(4) }}

  • Node* newNode = new Node; newNode->data = 42; newNode->next = head; head = newNode;
  • Node* newNode = new Node; head->data = 42; newNode->next = head; head = newNode;
  • Node* newNode = new Node; newNode->data = 42; head->next = newNode;
  • Node* newNode = new Node; newNode->data = 42; newNode->next = head;

5.根节点的高度为 1,一棵拥有 2023个节点的三叉树高度至少为()。 {{ select(5) }}

  • 6
  • 7
  • 8
  • 9

6.小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息。则小明一共有()种选择时间段的方案。

{{ select(6) }}

  • 31
  • 18
  • 21
  • 33

7.以下关于高精度运算的说法错误的是()

{{ select(7) }}

  • 高精度计算主要是用来处理大整数或需要保留多位小数的运算
  • 大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商
  • 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关
  • 高精度加法运算的关键在于逐位相加并处理进位

8.后缀表达式 6 2 3 + - 3 8 2 / + * 2 ^ 3 + 对应的中缀表达式是 {{ select(8) }}

  • ((6-(2+3))*(3+8/2))^2+3
  • 6-2+3*3+8/2^2+3
  • (6-(2+3))*((3+8/2)^2)+3
  • 6-((2+3)*(3+8/2))^2+3

9.数 10101021668101010_2 和166_8 的和为 ( ) {{ select(9) }}

  • (10110000)2(10110000)_2
  • (236)8 (236)_8
  • image
  • image

10.image

{{ select(10) }}

  • 1111,1110,101,100,110,0
  • 1010,1001,1000,011,010,00
  • 000,001,010,011,10,11
  • 1010,1011,110,111,00,01

11.给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历结果是什么?

{{ select(11) }}

  • EDBGFCA
  • EDGBFCA
  • DEBGFCA
  • DBEGFCA

12.考虑一个有向无环图,该图包含 4条有向边:(1,2),(1,3),(2,4) 和 (3,4)。以下哪个选项是这个有向无环图的一个有效的拓扑排序?

{{ select(12) }}

  • 4,2,3,1
  • 1,2,3,4
  • 1,2,4,3
  • 2,1,3,4

13.在计算机中,以下哪个选项描述的数据存储容量最小()

{{ select(13) }}

  • 字节 (byte)
  • 比特 (bit)
  • 字 (word)
  • 千字节 (kilobyte)

14.一个班级有 10 个男生和 12 个女生。如果要选出一个 3 人的小组,并且小组中必须至少包含 1 个女生,那么有多少种可能的组合?()

{{ select(14) }}

  • 1420
  • 1770
  • 1540
  • 2200

15.以下哪个不是操作系统?()

{{ select(15) }}

  • Linux
  • Windows
  • Android
  • HTML

二.阅读程序(判断题1.5分,选择题3分,共计40分)

image

假设输入的所有数都为不超过 1000 的正整数,完成下面的判断题和单选题:

判断题

1)(2分)当输入为 2 2 2 时,输出为1.7321( )

{{ select(16) }}

  • ×

2).(2分)将第7行中的 (s-b)*(s-c) 改为 (s-c)*(s-b) 不会影响程序运行的结果( )

{{ select(17) }}

  • ×
  1. (2分)程序总是输出四位小数( )

{{ select(18) }}

  • ×

单选题

4)当输入为 3 4 5 时,输出为( )

{{ select(19) }}

  • 6.0000
  • 12.0000
  • 24.0000
  • 30.0000

5)当输入为 5 12 13 时,输出为( )

{{ select(20) }}

  • 24.0000
  • 30.0000
  • 60.0000
  • 120.0000

image

判断题

1)f 函数的返回值小于等于 min⁡{𝑛,𝑚}()

{{ select(21) }}

  • ×
  1. f 函数的返回值等于两个输入字符串的最长公共子串的长度。()。 {{ select(22) }}
  • ×

3).当输入两个完全相同的字符串时,g 函数的返回值总是 true。() {{ select(23) }}

  • ×

单选题

4).将第19行中的 v[m][n] 替换为 v[n][m],那么该程序()。 {{ select(24) }}

  • 行为不变
  • 只会改变输出
  • 一定非正常退出
  • 可能非正常退出

5). 当输入为 csp-j p-jcs 时,输出为()。 {{ select(25) }}

  • 0
  • 1
  • T
  • F

6). 当输入为 csppsc spsccp 时,输出为()。 {{ select(26) }}

  • T
  • F
  • 0
  • 1

image

假设输入的 𝑛是绝对值不超过 1000 的整数,完成下面的判断题和单选题。

判断题

1). 如果输入的 𝑛 为正整数,solve2 函数的作用是计算 𝑛所有的因子的平方和( ) {{ select(27) }}

  • ×

2).第 13∼14*行的作用是避免 𝑛 的平方根因子 𝑖(或 𝑛/𝑖 )进入第 16 行而被计算两次( ) {{ select(28) }}

  • ×

3).如果输入的 𝑛为质数,solve2(n) 的返回值为 𝑛2𝑛^2+1() {{ select(29) }}

  • ×

单选题

4).(4分)如果输入的 𝑛为质数 𝑝的平方,那么 solve2(n) 的返回值为( ) {{ select(30) }}

  • p2+p+1p^2+p+1
  • 𝑛2+𝑛+1𝑛^2+𝑛+1
  • 𝑛2+1𝑛^2+1
  • p4+2p2+1p^4+2p^2+1

5). 当输入为正整数时,第一项减去第二项的差值一定( )

{{ select(31) }}

  • 大于 0
  • 大于等于 0 且不一定大于 0
  • 小于 0
  • 小于等于 0 且不一定小于 0

6)当输入为 5 时,输出为( )。

{{ select(32) }}

  • 651 625
  • 650 729
  • 651 676
  • 652 625

三、完善程序

(1)1. (寻找被移除的元素)问题: 原有长度为 𝑛+1 公差为 1 等差数列,将数列输到程序的数组时移除了一个元素,导致长度为 𝑛 的连续数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。试补全程序。 image

1).①处应填( )。 {{ select(33) }}

  • 1
  • nums[0]
  • right
  • left

2).②处应填( )。 {{ select(34) }}

  • left=mid+1
  • right=mid-1
  • right=mid
  • left=mid

3).③处应填( )。 {{ select(35) }}

  • left=mid+1
  • right=mid-1
  • right=mid
  • left=mid

4).④处应填( )。 {{ select(36) }}

  • left+nums[0]
  • right+nums[0]
  • mid+nums[0]
  • right+1

5).⑤处应填( )。 {{ select(37) }}

  • nums[0]+n
  • nums[0]+n-1
  • nums[0]+n+1
  • nums[n-1]
  1. (编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。 image
int main() {
    string str1, str2;
    cin >> str1 >> str2;
    cout << "Mininum number of operation:" << edit_dist_dp(str1, str2) << endl;
    return 0;
}

1).①处应填( )。 {{ select(38) }}

  • j
  • i
  • m
  • n

2).②处应填( )。 {{ select(39) }}

  • j
  • i
  • m
  • n

3).③处应填( )。 {{ select(40) }}

  • str1[i-1]==str2[j-1]
  • str1[i]==str2[j]
  • str1[i-1]!=str2[j-1]
  • str1[i]!=str2[j]

4).④处应填( )。

{{ select(41) }}

  • dp[i-1][j-1]+1
  • dp[i-1][j-1]
  • dp[i-1][j]
  • dp[i][j-1]

5).⑤处应填( )。

{{ select(42) }}

  • dp[i][j] + 1
  • dp[i-1][j-1]+1
  • dp[i-1][j-1]
  • dp[i][j]