爱迪国际C++2025全国CSP-J初赛原创模考大赛(7月)

*
您的姓名:
*
1.
单选题
完整的计算机系统由()组成。
A、运算器、控制器、存储器、输入设备和输出设备
B、主机和外部设备
C、硬件系统和软件系统
D、主机箱、显示器、键盘、鼠标、打印机
*
2.
选题

A、1072_8
B、 A8_16
C、1000101010_2
D、30212_4
*
3.
选题
阅读下列代码,请问输出a.age结果为()


A、0
B、NULL
C、102
D、f
*
4.
选题
一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。
A、250
B、500
C、254
D、501
*
5.
单选题
假设有一个双向链表,链表节点的定义如下
struct Node{
int data;
Node *left, *right;
}
Node* newnode = new Node;
现在想要在链表中Node* cur指针所指向的节点后插入一个新节点newnode,下面哪个操作是正确的?
A、cur->right->left = newnode; cur->right = newnode; newnode->right = cur->right; newnode->left = cur;
B、cur->right = newnode; cur->right->left = newnode; newnode->right = cur->right; newnode->left = cur;
C、newnode->right = cur->right; newnode->left = cur; cur->right = newnode;
D、cur->right->left = newnode; newnode->right = cur->right; newnode->left = cur; cur->right = newnode;
*
6.
选题
当输入12 时,以下代码的输出是()。

A、2
B、4
C、8
D、12
*
7.
选题
以下关于动态规划算法说法错误的是()。
A、动态规划常常适用于有重叠子问题和最优子结构性质的问题
B、某阶段的状态有可能因为后面状态的出现而被更新优化
C、动态规划算法可以通过递推来实现
D、动态规划算法解决最优问题时求出的结果一定是最优的
*
8.
选题
前缀表达式&*a-bc/d+/-efgh对应的后缀表达式是( )。
A、ab*c-de/fg/-h+&
B、abc-*def-g/h+/&
C、a*b-c&d/e-f/g+h
D、ab*c-de/fg+/-h&
*
9.
选题
有5 个元素,按照1、2、3、4、5的顺序进栈,请问下列哪个出栈序列是非法的()。
A、1 2 3 4 5
B、3 2 4 5 1
C、1 4 3 5 2
D、3 4 1 5 2
*
10.
选题
假设有一组字符{x,t,l, o, y,d},对应的频率分别为 9%,42%,15%,13%,18%,3%。请问以下哪个选项是字符xtloyd分别对应的一组哈夫曼编码?
A、1001 1 110 101 111 1001
B、11 0 110 101 111 1000
C、1001 0 110 101 111 1000​
11 0 110 101 110 1000
*
11.
选题
给定一棵二叉树,其前序遍历结果为:BADEFCGHI中序遍历结果为:EDFABGIHC请问这棵树的正确后序遍历的结果是什么?
A、EFDAIHGCB
B、FEDAIHGCB
C、EFDAGIHBC
D、FEDAIHGBC
*
12.
选题
5MB 等于( )。
A、50000 字节
B、5×1024 字节
C、5000×1000 字节
D、5×1024×1024 字节
*
13.
选题
以下排序算法的常见实现中,哪种排序算法无法保证一趟排序过后,能选择出一个元素放在其最终位置上( )。
A、冒泡排序
B、选择排序
C、插入排序
D、快速排序
*
14.
选题
200 和500 的公因数有多少个( )。
A、5
B、9
C、10
D、100
*
15.
选题
操作系统的基本功能是( )。
A、提供功能强大的网络管理工具
B、提供用户界面方便用户使用
C、 提供方便的可视化编辑程序
D、 控制和管理系统内的各种资源
*
16.
判断题

第8行去掉floor函数,程序运行结果不变。()
*
17.
判断题

第10行去掉ceil函数,程序运行结果不变。()
*
18.
判断题

若输入100000,程序运行结果依然正确。()
*
19.
判断题


程序运行结果永远大于0。()
*
20.
单选题

若输入4,则程序输出()。
A、 16
B、20
C、24
D、28
*
21.
判断题

将代码第4行改为vector <int> a;solve(),函数输出不会改变( )
*
22.
判断题

若字符串长度为len,solve()函数的时间复杂度为O(len)。()
*
23.
判断题

若输入的字符串长度小于10的7次方,那么一定存在一个int,范围内的t,使得solve()函数输出的字符串不变。( )
*
24.
单选题

若输入为24 cspcsp则输出为( )
A、ccc
B、csp
C、ccs
D、ccp
*
25.
单选题

若输入为50 cspcsp,则输出为( )
A、cpcp
B、csp
C、cspc
D、cscs
*
26.
单选题

solve()函数输出的字符串长度一定( )原字符串长度
A、小于
B、小于等于
C、大于
D、大于等于
*
27.
判断题

假设输入的n 和m 都是不超过16 的正整数,s 是由数字0~9 及字母A~F 构成的长度不超过30 的字符串。第7 行最后的t - '0',也可以写成t - 48。()
*
28.
判断题

假设输入的n 和m 都是不超过16 的正整数,s 是由数字0~9 及字母A~F 构成的长度不超过30 的字符串。调用turn_c(25)会返回字母O,()
*
29.
判断题

假设输入的n 和m 都是不超过16 的正整数,s 是由数字0~9 及字母A~F 构成的长度不超过30 的字符串。输入n、 sm依次为10、10000000000、2时,会输出二进制表示的十进制数10000000000。( )
*
30.
单选题

假设输入的n 和m 都是不超过16 的正整数,s 是由数字0~9 及字母A~F 构成的长度不超过30 的字符串。输入以下数据后
10
5678
2
输出的数据为( )。
A、0111010001101
B、1011000101110
C、1011100101111
D、1011001101010
*
31.
单选题

假设输入的n 和m 都是不超过16 的正整数,s 是由数字0~9 及字母A~F 构成的长度不超过30 的字符串。以下描述中,正确的是( )
A、已知输入的 n 和 m,以及最后的输出结果,可以唯一确定输入的 s。
B、当n=16, m=2 时,程序不会导致数组越界。
C、 将程序第 6 行改为char turn_n(char c){,对于相同的合法输入,程序的输出可能会发生改变。
D、D. 当n=16,m=2 时,s 长度为 5,则输出的字符串长度最多是 20
*
32.
单选题

假设输入的n 和m 都是不超过16 的正整数,s 是由数字0~9 及字母A~F 构成的长度不超过30 的字符串。这个程序的含义是( )。
A、将一个十进制数先转换成 n 进制再转换成 m 进制输出
B、将一个 m 进制数转换成 n 进制输出
C、 将一个 n 进制数转换成 m 进制输出
D、将一个 n 进制数转换成十进制输出
*
33.
单选题
(寻找元素位置)问题:该程序实现了在旋转排序数组中查找目标元素的功能。一个旋转排序数组就是将一个升序数组旋转若干个位置后得到的数组。例如,数组 [4,5,6,7,0,1,2] 可以看作是 [0,1,2,4,5,6,7] 旋转了3个位置。给定一个旋转排序数组 nums 和一个目标元素 target,函数 search 会返回目标元素在数组中的位置(下标从0开始)或者返回 -1(如果目标元素不在数组中)。试补全程序。

①处应填()
A、nums.size() - 1
B、nums.size()
C、nums.size() + 1
D、target.size()
*
34.
单选题
(寻找元素位置)问题:该程序实现了在旋转排序数组中查找目标元素的功能。一个旋转排序数组就是将一个升序数组旋转若干个位置后得到的数组。例如,数组 [4,5,6,7,0,1,2] 可以看作是 [0,1,2,4,5,6,7] 旋转了3个位置。给定一个旋转排序数组 nums 和一个目标元素 target,函数 search 会返回目标元素在数组中的位置(下标从0开始)或者返回 -1(如果目标元素不在数组中)。试补全程序。

②处应填()
A、mid + 1
B、mid - 1
C、mid
D、mid / 2
*
35.
单选题
(寻找元素位置)问题:该程序实现了在旋转排序数组中查找目标元素的功能。一个旋转排序数组就是将一个升序数组旋转若干个位置后得到的数组。例如,数组 [4,5,6,7,0,1,2] 可以看作是 [0,1,2,4,5,6,7] 旋转了3个位置。给定一个旋转排序数组 nums 和一个目标元素 target,函数 search 会返回目标元素在数组中的位置(下标从0开始)或者返回 -1(如果目标元素不在数组中)。试补全程序。

③处应填()
A、target > nums[mid]
B、target < nums[mid]
C、target = nums[mid]
D、target == nums[mid]
*
36.
单选题
(寻找元素位置)问题:该程序实现了在旋转排序数组中查找目标元素的功能。一个旋转排序数组就是将一个升序数组旋转若干个位置后得到的数组。例如,数组 [4,5,6,7,0,1,2] 可以看作是 [0,1,2,4,5,6,7] 旋转了3个位置。给定一个旋转排序数组 nums 和一个目标元素 target,函数 search 会返回目标元素在数组中的位置(下标从0开始)或者返回 -1(如果目标元素不在数组中)。试补全程序。

④处应填()
A、target > nums[mid]
B、target < nums[mid]
C、target = nums[mid]
D、target == nums[mid]
*
37.
单选题
(寻找元素位置)问题:该程序实现了在旋转排序数组中查找目标元素的功能。一个旋转排序数组就是将一个升序数组旋转若干个位置后得到的数组。例如,数组 [4,5,6,7,0,1,2] 可以看作是 [0,1,2,4,5,6,7] 旋转了3个位置。给定一个旋转排序数组 nums 和一个目标元素 target,函数 search 会返回目标元素在数组中的位置(下标从0开始)或者返回 -1(如果目标元素不在数组中)。试补全程序。

⑤处应填()
A、0
B、1
C、-1
D、mid
*
38.
单选题
实现一个简单的算术表达式计算器,它能够处理包含加(+)、减(-)、乘(*)运算符的表达式。表达式中可能包含括号以改变运算顺序。


① 处应该填( )
A、int oper1 = numstk.top(); int oper2 = numstk.top(); numstk.pop(); numstk.pop();
B、numstk.pop(); int oper1 = numstk.top(); numstk.pop(); int oper2 = numstk.top();
C、 int oper1 = numstk.top(); numstk.pop(); int oper2 = numstk.top(); numstk.pop();
D、int oper2 = numstk.top(); numstk.pop(); int oper1 = numstk.top(); numstk.pop(); `
*
39.
单选题
实现一个简单的算术表达式计算器,它能够处理包含加(+)、减(-)、乘(*)运算符的表达式。表达式中可能包含括号以改变运算顺序。


② 处应该填( )
A、i = j + 1
B、i = j - 1
C、j = i - 1
D、j = i + 1
*
40.
单选题
实现一个简单的算术表达式计算器,它能够处理包含加(+)、减(-)、乘(*)运算符的表达式。表达式中可能包含括号以改变运算顺序。


③ 处应该填( )
A、optstk.top() == '('
B、optstk.top() == '+' || optstk.top() == '-' || optstk.top() == '*'
C、optstk.top() == '+' || optstk.top() == '-'
D、optstk.top() != '*'
*
41.
单选题
实现一个简单的算术表达式计算器,它能够处理包含加(+)、减(-)、乘(*)运算符的表达式。表达式中可能包含括号以改变运算顺序。


④ 处应该填( )
A、 optstk.top() == '+' || optstk.top() == '-'
B、optstk.top() == '('
C、optstk.top() != '('
D、optstk.top() != '*'
*
42.
单选题
实现一个简单的算术表达式计算器,它能够处理包含加(+)、减(-)、乘(*)运算符的表达式。表达式中可能包含括号以改变运算顺序。


⑤ 处应该填( )
A、optstk.pop()
B、optstk.push(s[i])
C、空
D、numstk.pop()
问卷星提供技术支持
举报