跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

CCF-GESP 2025 年 6 月 C++ 二级真题解析

CCF-GESP 2025 年 6 月 C++ 二级考试真题包含单选、判断及编程题,涵盖计算机基础、数据类型、运算符、循环控制及数位分离等知识点。解析详细说明了各题考点与代码逻辑,提供两种幂和数求解方法,帮助考生掌握核心算法与应试技巧。

涅槃凤凰发布于 2026/3/22更新于 2026/10/686 浏览
CCF-GESP 2025 年 6 月 C++ 二级真题解析

2025 年 6 月真题

一、单选题(每题 2 分,共 30 分)

在这里插入图片描述

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

在这里插入图片描述

正确答案:A
考察知识点:计算机的存储与网络
解析:计算机中用于临时存储数据和程序、可扩容以提升运行时内存容量的是随机存取存储器 RAM;ROM 是只读存储器,内容一般固定,用于存储固件等;CACHE 是高速缓冲存储器,用于 CPU 和内存间加速数据交换,非用户扩容的常规内存;EPROM 是可擦除可编程只读存储器,也不是常规扩容的内存,所以选 A。

在这里插入图片描述

正确答案:C
考察知识点:基本数据类型、数据类型转换、基本运算符
解析:a*=b 等价于 a=a*b,a 是 int 类型,b 是 float,两者进行运算时,全部提升为 double 类型,运算结果为 double 类型数值 10.5,将其赋值给 int 类型变量 a,复合赋值运算符组成的表达式的值为运算符左侧变量的值,因此输出 a 的值为 10。所以选 C。

在这里插入图片描述

在这里插入图片描述

正确答案:A
考察知识点:基本运算符
解析:根据题目描述,空白处应该填写求百位上的数的代码。考察利用除和取余进行数位分离。B 选项得到万位和千位上数组成的数,比如 N 为 12345 时得到 12;C 选项得到十万位上的数;D 选项得到 0;只有 A 选项可以得到正确答案。正确答案为 A。

在这里插入图片描述

正确答案:D
考察知识点:基本运算
解析:(6, 28) 是由逗号运算符组成的表达式,表达式的值是最后一个逗号后边式子的值,因此定义 b 的同时给其赋值为 28,第 2 行不改变 a、b 的值,第 3 行将 b 的值赋值给 a,此时 a、b 的值都为 28。答案为 D。

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

正确答案:C
考察知识点:控制语句结构 - 循环、break、continue 关键字
解析:i 为 1,执行第 3 行,sum 值为 1,第 4 行 if 条件(1%2 的结果为 1,1 为真)成立,执行 continue,跳过其后语句,进入下一次循环;i 为 2,执行第 3 行,sum 值为 3,第 4 行 if 条件(2%2 的结果为 0,0 为假)不成立,第 5 行 if 条件(2%7 的结果为 2,2 为真)成立,执行 break,跳出循环;此时 sum 值为 3。正确答案 C。

在这里插入图片描述

正确答案:C
考察知识点:循环嵌套
解析:当 i 和 j 都不是偶数时,第 4 行条件成立,跳出内层循环。当 i 为 1,内层循环循环条件不成立;当 i 为 2,第 4 行条件不可能成立,内层循环执行完毕;当 i 为 3,内层循环 j 为 1 时,第 4 行条件成立,跳出内层循环;…;当 i 为 11,内层循环 j 为 1 时,第 4 行条件成立,跳出内层循环;当 i 为 12,外层循环结束。此时 i 为 12,j 为 1。输出 i*j 值为 12,答案为 C。

在这里插入图片描述

正确答案:B
考察知识点:控制语句结构 - 循环
解析:cnt 记录了循环次数,循环变量 i 的初始值为 -99,循环条件 i<100,i 的最大值为 99,循环步长为 2,循环次数为 100。答案为 B。

在这里插入图片描述

正确答案:A
考察知识点:控制语句结构 - 循环、break、continue 关键字
解析:i 不是 3 的倍数(i 为 1 和 2)时,第 3 行条件成立,执行第 4、5 行,否则(i 为 3)执行第 8 行。答案为 A。

在这里插入图片描述

在这里插入图片描述

正确答案:D
考察知识点:循环嵌套
解析:i 为 0,内层循环循环条件不成立,无输出;i 为 1,内层循环 j 的取值为 0,输出 1#0-。只有 D 符合。此类题型逻辑相似,建议自行推导验证。

在这里插入图片描述

正确答案:D
考察知识点:控制语句结构 - 循环、基本运算、数据的真假性
解析:不能被 3 整除且除以 5 余数为 2 可以表示为:i%3!=0 && i %5==2。
i%3 余数为 0 等价于 i%3 为假,i%3 余数不为 0 等价于 i%3 为真,因此 i%3 等价于 i%3!=0。
i %5==2 等价于 !(i %5!=2)。只有 D 无法实现题目要求。

在这里插入图片描述

在这里插入图片描述

正确答案:D
考察知识点:控制语句结构 - 循环
解析:判断一个大于 0 的正整数是几位数,数位分离的思想。除以 10 去掉数 N 的最后一位,反复执行,直到 N 为 0,循环次数即为数的位数。答案为 D。

在这里插入图片描述

正确答案:D
考察知识点:控制语句结构 - 循环、数位分离
解析:自守数的定义是如果一个数的平方其尾数与该数相同,则为自守数。
信息学竞赛中常出现新概念,需仔细审题,难点通常在于概念理解而非知识点本身。
对输入数和其平方依次从个位进行数位分离,直到输入数被拆完,如果此过程中分离出来的数都相等,则其为自守数,否则不是自守数。答案为 D。

在这里插入图片描述

在这里插入图片描述

正确答案:A
考察知识点:循环嵌套
解析:本题代码要实现的功能是:输出 10 行,第 i 行 输出 i 个数字,循环使用数字 0~9
A 选项,将 now_number=0 放在 L1 和 L2 之间,则每行输出的开始值都为 0,很显然和原来的效果不同。答案为 A。
B 选项,now_number+=1 等价于 now_number=1+now_number
C 选项,now_number==10 和 now_number>9 在本题场景下等价
D 选项,endl 和字符'\n'都表示换行。

二、判断题(每题 2 分,共 20 分)

在这里插入图片描述

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

在这里插入图片描述

正确答案:正确
考察知识点:基本运算
解析:十进制数除以 10 得到舍弃个位数的值,如果 N 本身为 1 位数,则结果为 0。答案正确。

在这里插入图片描述

正确答案:错误
考察知识点:基本运算
解析:(a, b) 是由逗号运算符组成的表达式,其值为最后一个逗号后边的式子的值,因此 cout<<(a,b) 输出的为 b 的值,第 2、3 行代码为判等的运算,不会改变 a、b 的值,因此输出结果为 20。答案错误。

在这里插入图片描述

正确答案:正确
考察知识点:基本运算
解析:max 和 min 是系统提供的函数,其作用分别是求两个数的较大值和较小值,两个数中的较大值和较小值相等,则这两个数一定相等。答案正确。

在这里插入图片描述

正确答案:错误
考察知识点:基本数据类型,基本运算、类型转换
解析:浮点值 45.6 可以赋值给字符类型变量 a,这里实际进行了两次类型转换,先将 45.6 转成 int 类型 45,再将 45 转成对应的字符(ASCII 码为 45 的字符)。答案错误。

在这里插入图片描述

正确答案:错误
考察知识点:基本运算、数据类型转换
解析:score 是 int 类型,输入 59.99,实际上是将 59 存入 score 中,第 4 行 if 条件成立,输出 不及格。答案错误。

在这里插入图片描述

正确答案:错误
考察知识点:控制语句结构 - 循环、continue 关键字
解析:for 循环语句中,当 if 条件成立,执行 continue,continue 用于跳过本次循环,进入下次循环。当循环执行完毕,i 的值为 10,第 5 行 if 条件成立,输出 END。答案错误。

在这里插入图片描述

正确答案:错误
考察知识点:控制语句结构 - 循环
解析:这段代码,每循环一次,将循环变量累加到 Sum 上边。Sum 最后的值为 0+1+2+3+4=10。答案错误。

在这里插入图片描述

正确答案:错误
考察知识点:控制语句结构 - 循环
解析:for(int i=5; i>1; i--) 循环变量从 5 开始,每循环一次减 1,直到 i>1 不成立,求的是 5+4+3+2 的和。
for(int i=1; i<5; i++) 循环变量从 1 开始,每循环一次加 1,直到 i<5 不成立,求的是 1+2+3+4 的和。答案错误。

在这里插入图片描述

正确答案:正确
考察知识点:控制语句结构 - 循环、基本运算
解析:N 为奇数,N/2 和 (N-1)/2 的计算结果相同,比如 N 为 5,计算结果都为 2,可以用来表示中间列。
N 为偶数,N/2 和 (N-1)/2 的计算结果不同,比如 N 为 6,N/2 结果为 3,(N-1)/2 结果为 2,可以分别用来表示中间两列。
代码符合题目要求。答案正确。

三、编程题(每题 25 分,共 50 分)

在这里插入图片描述

在这里插入图片描述

本题考察循环嵌套、算术运算符。

解析:当直角边长 a,b 均取不超过 n 的正整数时,有多少个不同的面积为整数的直角三角形。

直角三角形的面积为 a*b/2。因此要保证面积为整数,则 a 为偶数或者 b 为偶数。

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n, cnt = 0;
    cin >> n;
    for (int a = 1; a <= n; a++) {
        // 直角边长分别为 a,b 和 a1,b1 的两个直角三角形相同,
        // 当且仅当 a==a1, b==b1 或者 a==b1, b==a1,因此 b 要从 a 开始
        for (int b = a; b <= n; b++) {
            if (a % 2 == 0 || b % 2 == 0) cnt++; // 两条直角边 其中一个为偶数
        }
    }
    cout << cnt;
    return 0;
}

在这里插入图片描述

在这里插入图片描述

本题考察 循环嵌套、数学函数。

方法 1:幂和数:n=2^x+2^y(x,y 均为非负整数),找 l 和 r 之间有多少个幂和数

已知,1 ≤l ≤r ≤10^4,可推出,x、y 最小值为 0,最大值为 17(2^16 < 10^4 < 2^17),且为了防止重复遍历,y 取值要大于等于 x。

这个方法的难点是从 l,r 的范围推出 x,y 的范围。

#include <bits/stdc++.h>
using namespace std;
int main() {
    int l, r, cnt = 0;
    cin >> l >> r;
    for (int i = l; i <= r; i++) {
        for (int x = 0; x <= 17; x++) {
            for (int y = x; y <= 17; y++) {
                if (pow(2, x) + pow(2, y) == i) cnt++;
            }
        }
    }
    cout << cnt;
    return 0;
}

方法 2,幂和数:n=2^x+2^y(x,y 均为非负整数),找 l 和 r 之间有多少个幂和数。

令 a 表示 2^x, b 表示 2^y,则 a,b 最小为 1,最大不超过 r,且为了防止重复遍历,b 取值要大于等于 a。有以下代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    int l, r, a, b, cnt = 0;
    cin >> l >> r;
    a = 1; // a 初始化为 2 的 0 次方,即 1
    while (a <= r) {
        b = a; // 为了防止重复遍历,b 取值要大于等于 a
        while (b <= r) {
            int tmp = a + b;
            if (tmp >= l && tmp <= r) cnt++; // 在区间内
            b *= 2;
        }
        a *= 2;
    }
    cout << cnt;
    return 0;
}

目录

  1. 2025 年 6 月真题
  2. 一、单选题(每题 2 分,共 30 分)
  3. 二、判断题(每题 2 分,共 20 分)
  4. 三、编程题(每题 25 分,共 50 分)
  5. 本题考察循环嵌套、算术运算符。
  6. 解析:当直角边长 a,b 均取不超过 n 的正整数时,有多少个不同的面积为整数的直角三角形。
  7. 直角三角形的面积为 a*b/2。因此要保证面积为整数,则 a 为偶数或者 b 为偶数。
  8. 本题考察 循环嵌套、数学函数。
  9. 方法 1:幂和数:n=2^x+2^y(x,y 均为非负整数),找 l 和 r 之间有多少个幂和数
  10. 已知,1 ≤l ≤r ≤10^4,可推出,x、y 最小值为 0,最大值为 17(2^16 < 10^4 < 2^17),且为了防止重复遍历,y 取值要大于等于 x。
  11. 这个方法的难点是从 l,r 的范围推出 x,y 的范围。
  12. 方法 2,幂和数:n=2^x+2^y(x,y 均为非负整数),找 l 和 r 之间有多少个幂和数。
  13. 令 a 表示 2^x, b 表示 2^y,则 a,b 最小为 1,最大不超过 r,且为了防止重复遍历,b 取值要大于等于 a。有以下代码:

更多推荐文章

查看全部
  • Web 团队开发 App,是否应该选择 Capacitor?
  • Llama 3:Meta 新一代开源大语言模型详解
  • 如何使用 PaperXM 免费生成高质量论文实操指南
  • MoltBot 接入钉钉 Stream 流式接口配置详解
  • 无人机智能巡检在城市生命线管理中的应用实践
  • 归并排序的核心思想与进阶应用
  • Web 版 IM 聊天信息加密的三种实现方案
  • 基于 WebRTC+AI 的智能远程控制解决方案
  • Python 豆瓣高分书籍推荐:从入门到进阶
  • C++ 输入输出操作详解:从基础流到文件处理
  • 网络安全学习方向与路线详解
  • 基于 SpringBoot+Vue3 的网上摄影工作室系统设计与实现
  • OpenClaw 卸载指南:Windows macOS Linux npm pnpm
  • SQL Prompt 工具介绍与正版使用建议
  • AI 学习资源整理:工具、课程与实战指南
  • 读李宁《AIGC 自动化编程》:大模型辅助开发的分解与合并心法
  • C++ 笔试算法实战:打怪、字符串分类与城市群计数
  • 论文 AIGC 检测原理与降重工具实测指南
  • 前端 XSS 防护:layui util 与 js-xss 的实用写法
  • 文心一言:百度国产大模型的技术解析与应用

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online