CCF-GESP 2025 年 6 月 C++ 一级真题解析
本文详细解析了 CCF-GESP 2025 年 6 月 C++ 一级认证考试真题。内容包含单选题、判断题及编程题,覆盖计算机基础、变量与运算符、输入输出、循环控制结构等核心知识点。针对每道题提供了正确答案、考察点分析及代码实现,重点讲解了最小公倍数计算与欧几里得算法的应用,适合备考 C++ 初级认证的考生参考学习。

本文详细解析了 CCF-GESP 2025 年 6 月 C++ 一级认证考试真题。内容包含单选题、判断题及编程题,覆盖计算机基础、变量与运算符、输入输出、循环控制结构等核心知识点。针对每道题提供了正确答案、考察点分析及代码实现,重点讲解了最小公倍数计算与欧几里得算法的应用,适合备考 C++ 初级认证的考生参考学习。


正确答案:C
考察知识点:计算机相关知识
解析:传感器是获取外界信息(如姿态、平衡相关数据)并传递给机器人系统,这和计算机输入设备(用于向计算机输入数据和信息,比如键盘输入字符、鼠标输入操作指令)功能类似;处理器是处理数据,存储器是存储数据,输出设备是输出数据,均不符合传感器功能,所以 C 正确。

正确答案:A
考察知识点:计算机编程环境,断点调试,首次考察
解析:L1 是变量声明初始化代码行,可设断点;L2 执行前 N 已声明,暂停时能检测 N 值;调试暂停在 L3 时,可修改局部变量 i;若满足 i < 9 条件,执行可能暂停在 L4。所以 A 说法错误。

正确答案:D
考察知识点:变量的定义与使用、输入输出语句
解析:考察 C 语言输出语句 printf 以及 int 类型占位符,变量的定义和使用。C++ 中变量区分大小写,first 和 First 是不同变量,代码中 printf 里用 First 但未定义,会编译报错,A、B、C 均不符合代码实际情况,所以选 D。


正确答案:D
考察知识点:变量的定义与使用
解析:根据变量的命名规则:只能包含字母、数字和下划线;不能以数字开头;不能和关键字重名。A、B、C 选项包含了其他字符'.','-','#'。正确答案为 D。

正确答案:C
考察知识点:基本运算
解析:算术运算符的优先级,先算乘 3*3=9,再算取余 9%2=1,最后算减 14-1=13。答案为 C。

正确答案:B
考察知识点:基本运算
解析:利用加减运算实现两个整数变量值的交换。执行第二行后,x 的值为 30,y 的值为 20;执行第三行后,x 的值为 30,y 的值为 10;执行第 4 行后,x 的值为 20,y 的值为 10。x、y 两个变量的值完成交换。答案为 B。

正确答案:D
考察知识点:基本运算
解析:考察自增运算符和复合赋值运算符,运算符的优先级。自增运算符优先级高于复合赋值运算符。
前加加,先加再使用 a,则执行复合赋值运算之前 a 的值为 17,再 += 3,结果为 20。答案为 D。
注意:自增运算符 ++ 使得变量 a 增加 1,自减运算符 – 使得变量 a 减少 1。自增分前加加(++a)和后加加(a++),自减分前减减(–a)和后减减(a–),区别是表达式的值不同。前加加和前减减,表达式的值为操作之后的值。后加加和后减减,表达式的值是操作之前的值。

正确答案:C
考察知识点:基本运算
解析:括号提升优先级,执行++X,之后 X 的值为 9,cout<<X++,输出表达式 X++ 的值,后加加表达式的值是操作之前的值,因此输出 9,但执行后 X 的值自增 1,X 的值为 10。答案为 C。


正确答案:A
考察知识点:基本输入输出
解析:在 C++ 中,C 语言的 printf 函数使用格式控制字符串来格式化输出。
%02d:表示输出一个整数,并且宽度为 2,不足的部分用 0 补齐。
只有一个占位符,用其后 a+b 的值填充,其余原样输出。答案为 A。

正确答案:B
考察知识点:基本运算
解析:求星期 N 后 M 天是星期几?若当前是星期天(用 0 表示)则 1 天、8 天等后是星期一,2 天、9 天后是星期二,…;若当前是星期一,则 1 天、8 天等后是星期二,2 天、9 天后是星期三,…;则该求解可用 (N+M)%7 做取余运算运算求解,余数为 1~6 对应星期一到星期六,余数为 0 对应星期天。答案为 B。实际上,周期性问题都可以做类似解答。


正确答案:A
考察知识点:控制语句结构 - 循环、break、continue 关键字
解析:break 用于终止循环,跳到循环后边的语句;continue 用于中断当次循环,进入下一次循环,会跳过其后的循环体语句,跳到 for 循环的第三条语句循环间隔的位置。
for 循环的循环体第一条语句为 continue,因此循环内除了 continue,其他语句都未被执行过。循环结束于 i>=11,8 行 if 语句条件成立,执行第 9 行。答案为 A。

正确答案:C
考察知识点:控制语句结构 - 循环、基本运算
解析:求 N 的所有因数,最小因数为 1,最大因数是其本身。因此第 9 行输出了 1,因此循环只需要从其本身循环到 2,只有 C 满足。答案为 C。

正确答案:D
考察知识点:控制语句结构 - 循环
解析:for 循环从 0 循环到 9。i 为 0,第 3 行 if 条件成立,执行 continue 进入下一次循环;i 为 1,第 3 行、第 5 行 if 条件都不成立,将其累加到 Sum 上;i 为 2,第 3 行 if 条件成立,执行 continue 进入下一次循环;i 为 3,第 3 行、第 5 行 if 条件都不成立,将其累加到 Sum 上;i 为 4,第 3 行 if 条件成立,执行 continue 进入下一次循环;i 为 5,第 5 行 if 条件成立,执行 break 终止循环。此时 Sum 中累加了 1 和 3,结果为 4,答案为 D。

正确答案:C
考察知识点:基本运算
解析:自增/自减运算符相当于变量加 1/减 1 之后再赋值给变量。
第 3 行 x++,等价于 x=x+1,执行完毕 x 的值为 102,cout<<++x,输出表达式的值,前加加,表达式的值为加之后的值 103。答案为 C。


正确答案:B
考察知识点:控制语句结构 - 循环、选择、基本运算、数位分离
解析:利用除和取余进行数位分离取得个位、十位、百位上的数。第 4 行求十位上的数,只有 B 可以做到。答案为 C。A 取到的是百位上的数;C 得到的是 0;D 得到的是个位上的数。

正确答案:正确
考察知识点:考试规范
解析:闭卷考试为防作弊,禁止带具有信息存储、通信等作弊可能功能的设备,智能手表因有嵌入式系统、通信功能,会被禁止携带,该表述符合实际考试规范。答案正确。

正确答案:错误
考察知识点:基本运算、数据真假性
解析:所有数据都可以转为布尔类型,其中,非 0 数据为真,0 数据为假。
N 为 5,!N,逻辑运算符非 (!),运算对象和运算结果都为布尔类型,因此 !N 为假,即 0。表达式(N+!N)的值为 5+0。答案错误。

正确答案:正确
考察知识点:控制语句结构 - 循环、break、continue
解析:break 用于终止循环,跳到循环后边的语句;continue 用于中断当次循环,进入下一次循环,会跳过其后的循环体语句,跳到 for 循环的第三条语句循环间隔的位置。
循环体第一条语句为 continue,break 没有机会被执行到,因此删除对结果没有影响。答案正确。

正确答案:错误
考察知识点:控制语句结构 - 循环、continue
解析:关键字 continue 跳过本次循环后续语句,执行下次循环。在本题代码中,continue 之后并没有语句,因此删除并不影响。但本次输出应该是:0#2#4#6#8#END。答案错误。

正确答案:错误
考察知识点:控制语句结构 - 循环
解析:i = i+1,i 每次增加 1;i += i+1,相当于 i = i+i+1,假如当前 i 为 1,则执行完毕,i 的值变为 3;实现效果和之前大不相同,输出结果不可能相同。答案错误。

正确答案:错误
考察知识点:控制语句结构 - 循环
解析:cnt 初值为 0,每循环一次,cnt+=1,cnt 用于记录循环次数,但循环变量 i 未赋初值,因此循环执行次数未知。不管是否交换 i += 2,和 cnt += 1,每次运行结果都可能不同。答案错误。

正确答案:错误
考察知识点:控制语句结构 - 循环
解析:每循环一次,执行一次 cnt+=1,若 cnt 初值为 0,则 cnt 可以用来记录循环执行的次数——10 次。但本题 cnt 未赋初值,因此输出 cnt 结果不确定。答案错误。

正确答案:错误
考察知识点:基本运算、类型转换
解析:整数常量 12 是 int 类型,浮点数常量 12.12 是 double 类型,它们之间可以进行运算,12 会转成 double 类型继续运算,运算结果是 double 类型。答案错误。

正确答案:正确
考察知识点:false 是 C++ 关键字。答案正确。

正确答案:错误
考察知识点:基本运算
解析:数学中可以用 3<X<5 表示 4,但在编程语言中,这里出现了两个关系运算符,先算第一个关系运算符组成的表达式 3<X 的值,再拿这个结果和 5 进行比较。不管第一个表达式是否成立,其结果要不是 true(1),要不是 false(0),都比 5 小,则表达式 3<X<5 的结果为 true(1)。答案错误。


#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, t;
cin >> n >> k >> t;
if (n >= k * t) cout << k * t;
else cout << n;
return 0;
}


// 找最小公倍数
#include <bits/stdc++.h>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int t = 1;
// int t = max(m, n); // 优化 既然是倍数,至少是 1 倍,因此可以从 m、n 中的最大值开始尝试
while (true) {
if (t % m == 0 && t % n == 0) {
cout << t << endl;
break;
}
t++;
}
return 0;
}
// 找最小公倍数
#include <bits/stdc++.h>
using namespace std;
// 最大公约数
int gcd(int m, int n) {
return n == 0 ? m : gcd(n, m % n);
}
int main() {
int m, n;
cin >> m >> n;
// 方法 1:m*n/最大公约数
cout << m * n / gcd(m, n) << endl;
return 0;
}

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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