CSP月测试卷三
2026/6/12 21:35:14 网站建设 项目流程

一、选择题(共15题,每题4分,满分60分)

请将正确答案的序号填入答题栏,多选、错选、不选均不得分。

1、已知某二叉树的前序序列为ABCDEF,中序序列为BADCFE,则其后序序列为()

A. BDFECA B. BDFCEA C. BDFEAC D. BDFEAC

2、二叉树中,节点的“度”是指()

A. 该节点的子节点数量 B. 该节点的高度 C. 该节点所在层数 D. 树的总节点数

3、若栈的输入序列为2,4,6,8,10,则不可能的输出序列是()

A. 4,2,6,8,10 B. 10,8,6,4,2 C. 6,4,2,10,8 D. 2,8,4,6,10

4、执行栈操作:push(1)、push(2)、pop()、push(3)、push(4)、pop(),最终栈顶元素是()

A. 1 B. 3 C. 4 D. 栈空

5、将十进制数37转换为二进制数,结果为()

A. 100101 B. 101001 C. 100111 D. 110001

6、十六进制数5E转换为十进制数是()

A. 86 B. 94 C. 102 D. 110

7、若有向图中有n个顶点,要保证图是强连通的,最少需要的边数是()

A. n B. n+1 C. n(n-1) D. 2n

8、有向图中,所有顶点的入度之和与出度之和的关系是()

A. 入度之和大于出度之和 B. 入度之和小于出度之和 C. 相等 D. 无固定关系

9、从6个不同元素中选4个元素进行排列,排列数为()

A. 30 B. 60 C. 120 D. 360

10、从8个不同元素中选3个元素进行组合,组合数为()

A. 24 B. 56 C. 112 D. 336

11、以下关于C++中char类型的描述,正确的是()

A. char类型一定占1个字节 B. char只能存储字母 C. char的取值范围是0~255 D. char是无符号类型

12、若short类型占2个字节,则其能表示的最大整数是()

A. 215 B. 215-1 C. 216 D. 216-1

13、已知某二叉树的后序序列为DCBGFEA,中序序列为DCBAEFG,则其前序序列为()

A. ABCDEFG B. ADEFGBC C. ABDECFG D. AEDCBFG

14、进制转换中,将十六进制数4B转换为八进制数,结果为()

A. 113 B. 123 C. 133 D. 143

15、有4个元素a,b,c,d,入栈顺序为a→b→c→d,则可能的出栈顺序有()种

A. 8 B. 14 C. 20 D. 24

二、程序阅读题(共3题,满分40分)

请阅读下列C++程序,根据程序功能和逻辑,完成每题的判断和选择(判断题选A为正确,B为错误;选择题唯一正确答案)。

题1(13分)

阅读以下C++程序,回答问题:

#include <iostream> #include <string> using namespace std; int main() { string s = "xY123zA45"; string res; for (int i = 0; i < s.size(); i++) { if (s[i] >= 'A' && s[i] <= 'Z') { res += s[i] + 32; } else if (s[i] >= 'a' && s[i] <= 'z') { res += s[i]; } else if (s[i] >= '0' && s[i] <= '9') { continue; } } cout << "处理结果:" << res << endl; return 0; }

1、判断题:程序中continue的作用是跳过当前循环的剩余语句,进入下一次循环()(3分)

A. 正确 B. 错误

2、判断题:代码s[i] + 32的作用是将小写字母转换为大写字母()(3分)

A. 正确 B. 错误

3、该程序的功能是()(3分)

A. 保留小写字母,将大写字母转小写,删除数字

B. 保留大写字母,将小写字母转大写,删除数字

C. 保留数字,删除所有字母

D. 保留所有字符,仅转换字母大小写

4、程序的输出结果是()(4分)

A. xY123zA45 B. xyza C. xYza D. 12345

题2(14分)

阅读以下C++程序,回答问题:

#include <iostream> #include <string> using namespace std; // 查找子串在原串中首次出现的位置(从pos开始) int findFirst(string str, string sub, int pos) { return str.find(sub, pos); } int main() { string s = "test1test2test3"; string sub = "test"; int cnt = 0; int pos = 0; while (true) { pos = findFirst(s, sub, pos); if (pos == string::npos) { break; } cnt++; pos += sub.size(); } cout << cnt << endl; return 0; }

1、判断题:string::npos表示“未找到子串”()(3分)

A. 正确 B. 错误

2、判断题:循环中pos += sub.size()的作用是避免重复查找同一子串()(4分)

A. 正确 B. 错误

3、该程序的功能是()(3分)

A. 计算原串的长度 B. 计算子串的长度

C. 统计子串在原串中不重叠出现的次数 D. 拼接原串和子串

4、程序的输出结果是()(4分)

A. 1 B. 2 C. 3 D. 4

题3(13分)

阅读以下C++程序,回答问题:

#include <iostream> #include <cstring> using namespace std; // 字符数组逆序 void reverseArray(char arr[], int len) { int left = 0; int right = len - 1; while (left < right) { // 交换arr[left]和arr[right] char temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; left++; right--; } } int main() { char str[] = "csp2025"; int length = strlen(str); reverseArray(str, length); cout << str << endl; return 0; }

1、判断题:strlen(str)的作用是获取字符数组的长度(包含结束符'\0')()(3分)

A. 正确 B. 错误

2、判断题:该程序的时间复杂度是O(1)(n为字符数组长度)()(3分)

A. 正确 B. 错误

3、该程序的功能是()(3分)

A. 复制字符数组 B. 逆序字符数组

C. 截取字符数组前半部分 D. 拼接两个字符数组

4、程序的输出结果是()(4分)

A. csp2025 B. 5202psc C. psc2025 D. 2025csp

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询