2025 CCF 非专业级别软件能力认证第一轮 (CSP-J1)
入门级 C++ 语言试题(题目 + 答案 + 解析)
一、单项选择题 (1 ~ 15)
1.
题目: 一个 32 位无符号整数可以表示的最大值,最接近下列哪个选项?
选项:
- A. 4×10^9
- B. 3×10^10
- C. 2×10^9
2025 年 CCF 非专业级别软件能力认证第一轮(CSP-J1)入门级 C++ 语言试题。内容包含单项选择题、阅读程序题和完善程序题三部分,涵盖 C++ 基础语法、数据结构、算法逻辑及数学计算等知识点。每道题均附带参考答案与详细解析,适合备考 CSP-J 的初学者参考复习。
入门级 C++ 语言试题(题目 + 答案 + 解析)
题目: 一个 32 位无符号整数可以表示的最大值,最接近下列哪个选项?
选项:
答案: A 解析: 最大值 2^32 - 1 ≈ 4.29 × 10^9,最接近 4×10^9。
题目: 在 C++ 中,执行以下代码,输出的结果是?
int x = 255;
cout << (x & (x - 1));
选项:
答案: B 解析: 255 & 254 = 0xFF & 0xFE = 254。
题目:
函数 calc(n) 定义如下,则 calc(5) 的返回值是多少?
int calc(int n) {
if (n <= 1) return 1;
if (n % 2 == 0) return calc(n / 2) + 1;
else return calc(n - 1) + calc(n - 2);
}
选项:
答案: B 解析: f(0)=1, f(1)=1, f(2)=2, f(3)=3, f(4)=3, f(5)=6。
题目: 用 5 个权值 10, 12, 15, 20, 25 构造哈夫曼树,该树的带权路径长度是多少?
选项:
答案: B 解析: 合并序列:10+12=22, 15+20=35, 22+25=47, 35+47=82,总和=186。
题目: 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和,这个总和等于?
选项:
答案: B 解析: 有向图入度和 = 出度和 = 边数。
题目: 从 5 位男生和 4 位女生中选出 4 人组成一个学习小组,要求小组中男女都有。共有多少种不同的选法?
选项:
答案: C 解析: 总数 C(9,4)=126,减去全男 (5) 和全女 (1),得 120。
题目:
逻辑表达式 (a && b) || (!c && a) 与下列哪个不等价?
选项:
答案: C 解析: 原式化简为 a∧(b∨¬c),C 不等价。
题目: 已知 f[0]=1, f[1]=1,f[n]=(f[n-1]+f[n-2])%7,求 f[2025]。
选项:
答案: D 解析: 模 7 的斐波那契周期为 16,2025 mod 16=9,f[9]=6。
题目:
下列关于 C++ string 的说法正确的是?
选项:
+ 连接 string 和 char答案: B 解析: 其余均错误。
题目:
void solve(int& a, int b) {
a = a + b;
b = a - b;
a = a - b;
}
int main() {
int x = 5, y = 10;
solve(x, y);
}
调用后 x,y 的值?
选项:
答案: C 解析: a 引用传递,b 值传递,最终 x=10,y=10。
题目: 机器人从 (1,1) 走到 (4,5),只能向右或下走,有多少路径?
选项:
答案: B 解析: 共 7 步,选 3 步向下,C(7,3)=35。
题目: 冒泡排序 {6,1,5,2,4} 升序,需要交换多少次?
选项:
答案: B 解析: 逆序对数=6。
题目: 720₁₀ + 270₈ 的和用十六进制表示是多少?
选项:
答案: A 解析: 720+184=904=0x388。
题目: 1000 个结点的完全二叉树,叶子结点数是多少?
选项:
答案: C 解析: 叶子数=⌊n/2⌋=500。
题目: 队列 A={7,5,8,3,1,4,2},奇数入栈,偶数出栈入队,最终队列 P 内容是?
选项:
答案: A 解析: 按规则操作,结果为 5,1,3。
题目: 当输入为 2 时,程序并不会执行第 16 行的判断语句。(判断题)
答案: √ 解析: n=2 时最内层 k 循环不进入,判断语句不执行。
题目:
将第 16 行中的 && gcd(i,k) == 1 删去不会影响程序运行结果。(判断题)
答案: × 解析: 删去后会多计数,结果改变。
题目: 当输入的 n ≥ 3 的时候,程序总是输出一个正整数。(判断题)
答案: √ 解析: n≥3 时至少有三元组 (1,2,3) 满足条件,输出为正。
题目:
将第 7 行的 gcd(b,a%b) 改为 gcd(a,a%b) 后,程序可能出现的问题是?
选项:
答案: A
解析: 改为 gcd(a,a%b) 后始终返回 a(如 gcd(36,42) 得 36),结果偏大。
题目: 当输入为 8 的时候,输出为?
选项:
答案: D 解析: 计数'两两互素'的三元组,含 1 的有 14,不含 1 的有 11,总计 25。
题目: 调用 gcd(36,42) 会返回?
选项:
答案: A 解析: 标准欧几里得算法,结果为 6。
题目:
当输入为 3 1 3 2 1 时,输出结果为 2。(判断题)
答案: √ 解析: 排序去重后 {1,2,3},输出 2。
题目: 假设输入的 n 为正整数,输出的答案一定小于等于 n,大于等于 1。(判断题)
答案: √ 解析: ans[n] 从 1 起步,且不超过去重后的 n。
题目:
将第 14 行的 unique 去重删去后,有可能出现与原本代码不同的输出结果。(判断题)
答案: √ 解析: 不去重会影响窗口与计数,结果可能不同。
题目: 执行第 18 行代码时,一定满足的条件不包括?
选项:
答案: B 解析: 循环条件用的是 a[j+1],不保证 a[i]-a[j]>k。
题目: 当输入 n=100, k=2, a={1,2,…,100} 时,输出为?
选项:
答案: A 解析: 每段至多 3 个数,⌈100/3⌉=34。
题目: 若误删去第 13 行的排序,程序可能出现的问题有?
选项:
答案: D 解析: 不排序会破坏双指针假设,答案可能更大或更小,但循环仍终止。
题目:
当输入 4 1 2 3 4 1 3 2 2 时,输出为 2。(判断题)
答案: √ 解析: LCS 长度为 2。
题目: 当程序运行完毕后,对于所有 1 ≤ i,j ≤ n,都一定有 f[i][j] ≤ f[n][n]。(判断题)
答案: √ 解析: f[i][j] 为前缀 LCS,整体最优不小于任何前缀最优。
题目:
将第 18 行的 f[i][j] = max(...f[i-1][j], f[i][j-1]) 删去后,并不影响程序运行结果。(判断题)
答案: × 解析: 删去会使 DP 无法正确传递,答案改变。
题目: 输出的答案满足的性质有?
选项:
答案: D 解析: LCS 长度 ≤ n,≥0,不一定 ≥1。
题目:
如果在循环前加上 sort(a) 和 sort(b),则答案会?
选项:
答案: A 解析: 排序只会使公共子序列不减。
题目: 如果输入 a={1,2,…,n},b 为 1~n 的整数,则上述代码等价于?
选项:
答案: B 解析: LCS(a,b) 等价于 b 的 LIS。
题目:
在第 14 行 if ( ... ) && isdigit(z[i+1])) 的空白处应填什么?
选项:
答案: C
解析: 需要保证访问 z[i+1] 合法,因此应写 i+1 < z.length()。
题目:
在第 18 行 count = ... ; 的空白处应填什么?
选项:
答案: B
解析: 多位数字累积时应写 count = count * 10 + (z[i]-'0')。
题目:
在第 21 行 for (int j=0; j< ... ; ++j) 的空白处应填什么?
选项:
答案: B 解析: 应重复 count 次该字符。
题目:
在第 25 行 s += ... ; 的空白处应填什么?
选项:
答案: B 解析: 单次出现直接加入当前字符 ch。
题目:
在第 26 行 ... ; 的空白处应填什么?
选项:
答案: C 解析: 消费一个字符后向前推进一位。
题目:
在第 12 行 int count = ... ; 的空白处应填什么?
选项:
答案: B 解析: 初始候选人计数应为 1。
题目:
在第 13 行 if ( ... ) { candidate = i; count=1; } 的空白处应填什么?
选项:
答案: C 解析: 当计数为 0 时重置候选人。
题目:
在第 18 行 if ( ... ) { count--; } 的空白处应填什么?
选项:
答案: D 解析: 只要有一方判对方为糊涂,就说明二者不能同时为精明,应抵消。
题目:
在第 19 行 ... ; 的空白处应填什么?
选项:
答案: A 解析: 满足抵消条件时,计数减一。
题目:
在第 28 行 cout << ... << endl; 的空白处应填什么?
选项:
答案: C 解析: 输出最终候选人编号。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online