资讯详情

2023年CSP-J1答案与解析(全站首发( ̄_, ̄ ))

📅 2026/9/10 16:48:12 | 华诺云谱 👁 阅读
2023年CSP-J1答案与解析(全站首发( ̄_, ̄ ))
分数100考试时间120分钟一、单项选择题共15题每题2分共计30分每题有且仅有一个正确选项在 C 中下面哪个关键字用于声明一个变量其值不能被修改A.unsignedB.constC.staticD.mutable答案B八进制数12345670₈和07654321₈的和为 。A.22222221₈B.21111111₈C.22111111₈D.22222211₈答案A解析八进制逐位相加结果为22222221₈。读下述代码请问修改data的value成员以存储3.14正确的方式是 。union Data{ int num; float value; char symbol; }; union Data data;A.data.value 3.14;B.value.data 3.14;C.data-value 3.14;D.value-data 3.14;答案A假设有一个链表的节点定义如下struct Node{ int data; Node* next; };现在有一个指向链表头部的指针Node* head如果想要在表中插入一个新节点其成员data的值为42并使新节点成为链表的第一个节点下面哪个操作是正确的A.Node* newNode new Node; newNode-data 42; newNode-next head; head newNode;B.Node* newNode new Node; head-data 42; newNode-next head; head newNode;C.Node* newNode new Node; newNode-data 42; head-next newNode;D.Node* newNode new Node; newNode-data 42; newNode-next head;答案A根节点的高度为 1一棵拥有 2023 个节点的三叉树高度至少为 。A.6B.7C.8D.9答案C解析高度为 h 的三叉树最多有 (3^h - 1) / 2 个节点h7 时最多 1093 个不够所以至少 8。小明在某一天中依次有七个空闲时间段他想要选出至少一个空闲时间段来练习唱歌但他希望任意两个练习的时间段之间都有至少两个空闲时间段让他休息则小明一共有 种选择时间段的方案。A.31B.18C.21D.33答案B以下关于高精度运算的说法错误的是 。A.高精度计算主要是用来处理大整数或需要保留多位小数的运算B.大整数除以小整数的处理的步骤可以是将被除数和除数对齐从左到右逐位尝试将除数乘以某个数通过减法得到新的被除数并累加商C.高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关D.高精度加法运算的关键在于逐位相加并处理进位答案C后缀表达式6 2 3 - 3 8 2 / * 2 ^ 3 对应的中缀表达式是 。A.((6 - (2 3)) * (3 8 / 2)) ^ 2 3B.6 - 2 3 * 3 8 / 2 ^ 2 3C.(6 - (2 3)) * ((3 8 / 2) ^ 2) 3D.6 - ((2 3) * (3 8 / 2)) ^ 2 3答案A数101010₂和166₈的和为 。A.10110000₂B.236₈C.158₁₀D.A0₁₆答案D假设有一组字符{a, b, c, d, e, f}对应的频率分别为5%, 9%, 12%, 13%, 16%, 45%。请问以下哪个选项是字符a, b, c, d, e, f分别对应的一组哈夫曼编码A.1111, 1110, 101, 100, 110, 0B.1011, 1001, 1000, 011, 010, 100C.000, 001, 010, 011, 10, 11D.1010, 1011, 110, 111, 00, 01答案A给定一棵二叉树其前序遍历结果为ABCDEFG中序遍历结果为DEBACFG。请问这棵树的后序遍历结果是什么A.EDBFGCAB.EDBGCFAC.DEBGFCAD.DBEGFCA答案C考虑一个有向无环图该图包含 4 条有向边(1, 2), (1, 3), (2, 4), (3, 4)。以下哪个选项是这个有向无环图的一个有效的拓扑排序A.4, 2, 3, 1B.1, 2, 3, 4C.1, 2, 4, 3D.2, 1, 3, 4答案B在计算机中以下哪个选项描述的数据存储容量最小A.字节byteB.比特bitC.字wordD.千字节kilobyte答案B一个班级有 10 个男生和 12 个女生。如果要选出一个 3 人的小组并且小组中必须至少包含 1 个女生那么有多少种可能的组合A.1420B.1770C.1540D.2200答案A以下哪个不是操作系统A.LinuxB.WindowsC.AndroidD.HTML答案D二、阅读程序程序一#includeiostream #includecmath using namespace std; double f(double a, double b, double c) { double s (a b c) / 2; return sqrt(s * (s - a) * (s - b) * (s - c)); } int main() { cout.flags(ios::fixed); cout.precision(4); int a, b, c; cin a b c; cout f(a, b, c) endl; return 0; }假设输入的所有数都为不超过 1000 的正整数完成下面的判断题和单选题。判断题当输入为2 2 2时输出为1.7321。答案√将第 7 行中的(s-b)*(s-c)改为(s-c)*(s-b)不会影响程序运行的结果。答案√解析乘法交换律结果不变。程序总是输出四位小数。答案√解析ios::fixed配合precision(4)固定输出 4 位小数。单选题当输入为3 4 5时输出为 。A.6.0000B.12.0000C.24.0000D.30.0000答案A当输入为5 12 13时输出为 。A.24.0000B.30.0000C.60.0000D.120.0000答案B程序二cpp#includeiostream #includevector #includealgorithm using namespace std; int f(string x, string y) { int m x.size(); int n y.size(); vectorvectorint v(m 1, vectorint(n 1, 0)); for (int i 1; i m; i) { for (int j 1; j n; j) { if (x[i - 1] y[j - 1]) { v[i][j] v[i - 1][j - 1] 1; } else { v[i][j] max(v[i - 1][j], v[i][j - 1]); } } } return v[m][n]; } bool g(string x, string y) { if (x.size() ! y.size()) { return false; } return f(x x, y) y.size(); } int main() { string x, y; cin x y; cout g(x, y) endl; return 0; }判断题f函数的返回值小于等于min(n, m)。答案√f函数的返回值等于两个输入字符串的最长公共子串的长度。答案×解析返回的是最长公共子序列的长度不是子串。当输入两个完全相同的字符串时g函数的返回值总是true。答案√单选题将第 19 行中的v[m][n]替换为v[n][m]那么该程序 。A.行为不变B.只会改变输出C.一定非正常退出D.可能非正常退出答案D解析若m ! n访问v[n][m]可能越界程序可能崩溃。当输入为csppsc spsccp时输出为 。A.0B.1C.TD.F答案B当输入为csppsc spsccp时输出为 。A.TB.FC.0D.1答案D程序三cpp#include iostream #include cmath using namespace std; int solve1(int n) { return n * n; } int solve2(int n) { int sum 0; for (int i 1; i sqrt(n); i) { if (n % i 0) { if (n / i i) { sum i * i; } else { sum i * i (n / i) * (n / i); } } } return sum; } int main() { int n; cin n; cout solve2(solve1(n)) solve1(solve2(n)) endl; return 0; }假设输入的n是绝对值不超过 1000 的整数完成下面的判断题和单选题。判断题如果输入的n为正整数solve2函数的作用是计算n所有的因子的平方和。答案√第 13~14 行的作用是避免n的平方根因子i或n/i进入第 16 行而被计算两次。答案√如果输入的n为质数solve2(n)的返回值为n² 1。答案√单选题如果输入的n为质数p的平方那么solve2(n)的返回值为 。A.p² p 1B.n² n 1C.n² 1D.p⁴ 2p² 1答案B当输入为正整数时第一项减去第二项的差值一定 。A.大于 0B.大于等于 0 且不一定大于 0C.小于 0D.小于等于 0 且不一定小于 0答案D当输入为5时输出为 。A.651 625B.650 729C.651 676D.652 625答案C三、完善程序1寻找被移除的元素问题原有长度为n1、公差为 1 的等差升序数列将数列输入到程序的数组时移除了一个元素导致长度为n的升序数组可能不再连续除非被移除的是第一个或最后一个元素。需要在数组不连续时找出被移除的元素。试补全程序。cpp#include iostream #include vector using namespace std; int find_missing(vectorint nums) { int left 0, right nums.size() - 1; while (left right) { int mid left (right - left) / 2; if (nums[mid] - mid nums[0]) { left mid 1; } else { right mid; } } return left nums[0]; } int main() { int n; cin n; vectorint nums(n); for (int i 0; i n; i) cin nums[i]; int missing_number find_missing(nums); if (missing_number nums[n - 1]) { cout Sequence is consecutive endl; } else { cout Missing number is missing_number endl; } return 0; }① 处应填 。A.1B.nums[0]C.rightD.left答案B② 处应填 。A.left mid 1B.right mid - 1C.right midD.left mid答案A③ 处应填 。A.left mid 1B.right mid - 1C.right midD.left mid答案C④ 处应填 。A.left nums[0]B.right nums[0]C.mid nums[0]D.right 1答案A⑤ 处应填 。A.nums[0] nB.nums[0] n - 1C.nums[0] n 1D.nums[n - 1]答案D2编辑距离给定两个字符串每次操作可以选择删除Delete、插入Insert、替换Replace一个字符求将第一个字符串转换为第二个字符串所需要的最少操作次数。cpp#include iostream #include string #include vector using namespace std; int min(int x, int y, int z) { return min(min(x, y), z); } int edit_dist_dp(string str1, string str2) { int m str1.length(); int n str2.length(); vectorvectorint dp(m 1, vectorint(n 1)); for (int i 0; i m; i) { for (int j 0; j n; j) { if (i 0) dp[i][j] j; else if (j 0) dp[i][j] i; else if (str1[i - 1] str2[j - 1]) dp[i][j] dp[i - 1][j - 1]; else dp[i][j] 1 min(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]); } } return dp[m][n]; } int main() { string str1, str2; cin str1 str2; cout Mininum number of operation: edit_dist_dp(str1, str2) endl; return 0;}① 处应填 。A.jB.iC.mD.n答案A② 处应填 。A.jB.iC.mD.n答案B③ 处应填 。A.str1[i - 1] str2[j - 1]B.str1[i] str2[j]C.str1[i - 1] ! str2[j - 1]D.str1[i] ! str2[j]答案A④ 处应填 。A.dp[i - 1][j - 1] 1B.dp[i - 1][j - 1]C.dp[i - 1][j]D.dp[i][j - 1]答案B⑤ 处应填 。A.dp[i][j] 1B.dp[i - 1][j - 1] 1C.dp[i - 1][j - 1]D.dp[i][j]答案C参考答案汇总题号答案题号答案题号答案1B16√31D2A17√32C3A18√33B4A19A34A5C20B35C6B21√36A7C22×37D8A23√38A9D24D39B10A25B40A11C26D41B12B27√42C13B28√14A29√15D30B写完啦bye
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。