CCF-GESP 等级考试 2025年9月认证C++一级真题解析

CCF-GESP 等级考试 2025年9月认证C++一级真题解析

2025年9月真题

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

在这里插入图片描述


正确答案:D
考察知识点:计算机相关知识
解析:在人工智能领域,“大模型” 最贴切的通常是指大语言模型。大语言模型是基于大规模文本数据训练的,能够理解和生成自然语言等内容,像常见的 ChatGPT 等就属于大语言模型范畴。而选项 A “大电脑模型” 表述不准确;选项 B “大规模智能” 不是对 “大模型” 的准确指代;选项 C “智能的单位” 也不符合 “大模型” 的定义。答案为D。

在这里插入图片描述


正确答案:C
考察知识点:流程控制语句
解析:计算 1 到 10001 之间的所有偶数和,需要重复累加操作(循环结构),且需判断是否为偶数(分支结构)。仅用顺序结构无法实现重复操作和条件判断,所以C 选项最不合适。答案为C。

在这里插入图片描述


正确答案:C
考察知识点:标识符的命名规则
解析:根据变量的命名规则:只能包含字母、数字和下划线;不能以数字开头;不能和关键字重名。B、D选项包含了其他字符’ ‘,’-',不能作为变量名。A选项,汉语拼音只要符合变量的命名规则,也可以作为变量名。答案为C。

在这里插入图片描述


在这里插入图片描述


正确答案:C
考察知识点:基本运算符、C++语法、注释
解析:C++代码中,一条完整语句以 分号(;)结尾,因此本题中,输出语句是:cout << a/b << a%a*b;
a / b = 13 / 5 = 2,a % a * b = 13 % 13 * 5 = 0 *5 = 0,代码中输出格式无分隔,所以输出20。答案为C。
注释作用:提升代码的可读性和可维护性,它不会被编译器或解释器执行,仅为开发者服务。分当行注释、多行注释。
单行注释:使用//符号,从//开始到该行末尾的所有内容都会被编译器忽略。对本题来说,忽略 //之后所有内容,此时该行还没有 分号,也即语句没有结束,下一行直到 分号之前 属于同一条语句。

在这里插入图片描述


正确答案:D
考察知识点:基本运算符
解析:本题中,表示式中只存在乘、取余、除运算符,优先级相同,从左往右计算,3*4 结果为12, 12%5 结果为2,2/4 结果为0。答案为D。

在这里插入图片描述


正确答案:A
考察知识点:基本输入输出
解析:考察了C语言风格的输入输出;scanf(“%d”)会跳过制表符(tab键,空格组成)等空白字符,正确读取N=10、M=20,计算N+M=30,按格式输出{30}。答案为A。

在这里插入图片描述


正确答案:D
考察知识点:控制语句结构-选择
解析:需计算 9 月过N个月后的月份,利用取模运算处理循环。公式为(9 + N) % 12,当结果为 0 时对应 12 月,否则为计算结果。答案为D。刷过真题的一定做过关于星期的那道题,一样道理哈。

在这里插入图片描述


正确答案:C
考察知识点:控制语句结构-循环
解析:i从 0 到 99 循环,共 100 次。i%2在奇数时为 1,偶数时为 0。0 到 99 中有 50 个奇数,所以n累加后为 50。答案为C。

在这里插入图片描述


在这里插入图片描述


正确答案:C
考察知识点:控制语句结构-循环
解析:i从 - 100 到 99 循环,共 199 次。i % 10的结果在每 10 个数中对称抵消(如 - 100%10=0,-99%10=-9,9%10=9 等),总和为 0。因此N最终为 0。答案为C。

在这里插入图片描述


正确答案:A
考察知识点:控制语句结构-循环、break关键字
解析:循环中 i 取 1、2 时,因i%3 != 0,输出1#、2#;i 为 3 时 i%3 == 0,执行break跳出循环。
循环结束后 i 为 3,不满足i>5,END不输出。答案为A。

在这里插入图片描述


正确答案:C
考察知识点:流程控制语句-循环、数位分离
解析:该代码的逻辑是通过循环取出N的每一位数字,构建逆序结果rst。循环应在N的所有数字处理完毕(即N变为 0)时结束。
选项 A(N != 0)、B(not (N == 0),即N != 0)、D(N > 0)都能保证循环在N处理完后终止;而选项 C(N = 0)是赋值操作,会导致循环条件恒为0(逻辑假),循环一次都不执行,无法正确计算镜面数。答案为C。

在这里插入图片描述


在这里插入图片描述


正确答案:D
考察知识点:基本数据类型、基本运算符
解析:python语言中可以使用D选项的方式完成两个变量的交换,但C++不支持这种方式。答案为D。
A选项借助于第三个变量完成两个变量值的交换。
B、C选项借助于数的运算完成两个变量值的交换,可以自己手动推一推。

在这里插入图片描述


正确答案:D
考察知识点:基本运算符、流程控制语句-循环
解析:首先,div的作用是通过循环乘以 10,得到一个数,使得N / div可以把第M位及更高位的数保留,去掉低位。比如N = 1234,M = 2时,循环后div = 10。然后N / div得到123(整数除法),再对10取余,就得到第2位的数字3。所以横线处应填N / div % 10。答案为D。

在这里插入图片描述


在这里插入图片描述


正确答案:A
考察知识点:控制语句结构-循环、continue关键字
解析:初始num = 0,进入while循环(num <= 5)。
第一次循环:num += 1后num = 1,num != 3,执行printf,输出1#。
第二次循环:num += 1后num = 2,num != 3,执行printf,输出2#。
第三次循环:num += 1后num = 3,num == 3,执行continue,跳过printf。
第四次循环:num += 1后num = 4,num != 3,执行printf,输出4#。
第五次循环:num += 1后num = 5,num != 3,执行printf,输出5#。
第六次循环:num += 1后num = 6,num != 3,执行printf,输出6#。
最终输出为1#2#4#5#6#。答案为A。

在这里插入图片描述


正确答案:D
考察知识点:流程控制语句-循环
解析:选项 A:若第一个数输入-999,min_num和max_num会被赋值为-999,且循环不执行,输出-999 -999,该选项正确。
选项 B:若第一个数不是-999,且后续没有-999,程序会正常比较每个输入数,求出最大和最小数,该选项正确。
选项 C:考试成绩中无-999,程序能正常运行求出最高和最低成绩,该选项正确。
选项 D:D循环有点描述不清,但无论是移动第1行还是第11行,都会出现问题。
移动第一行,则min_num和max_num的初值变为未知值,后续无法比较。
移动第11行,输入的第一个数作为最大、最小值没问题,进入循环即输入下一个数,这个数参与比较,如果这个是-999,会产生错误。答案为D。

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

在这里插入图片描述


正确答案:错误
考察知识点:集成开发环境
解析: 在现代集成开发环境(如 Visual Studio、Eclipse 等)中,调试过程中是可以修改源程序的,很多集成开发环境支持 “编辑并继续” 功能,修改后不需要终止调试、关闭文件再重新打开,能在调试过程中直接应用修改并继续调试。表述错误。

在这里插入图片描述


正确答案:正确
考察知识点:基本运算符
解析:取余运算符的两个操作数要求必须是整数,小数会报错。表述正确。

在这里插入图片描述


正确答案:错误
考察知识点:流程控制语句-循环、break
解析:循环中只有一条语句,进入循环执行break,终止循环,此时 i 的值为0,因此输出为0。表述错误。

在这里插入图片描述


正确答案:错误
考察知识点:流程控制语句-循环
解析:for循环,循环变量 i 初始值为0,循环条件是i > -10,循环步长i–。所以i的取值依次为0, -1, -2, …, -9,共10 次循环。每次循环,将 i*-1 累加到n上,计算可得 循环结束 n 的值为45。表述错误。

在这里插入图片描述


正确答案:正确
考察知识点:流程控制语句-循环
解析:for循环,循环变量 i 初始值为0,循环条件是i < 100,循环步长i++。所以i的取值依次为0, 1, 2, …, 99。每次循环执行cnt+=i,因此本题代码实现的功能是将0~99累加到cnt上,将 i=0 修改为 i=1,代码功能变成了将1~99 累加到cnt上,累计和上少一个0并不会改变结果,输出自然相同。表述正确。

在这里插入图片描述


正确答案:错误
考察知识点:流程控制语句-循环
解析:变量 n 和变量 i 赋值为0,while循环 循环条件为 i<10,循环内执行语句 n+=i,i+=1,所以 i 的取值依次为0, 1, 2, …, 9,每次将 i 累加到 n 上,代码实现的功能是0~9的累加和。如果将 i<10 更改为 i<=10,则代码实现的功能是0~10的累加和,输出结果显然不同,表述错误。

在这里插入图片描述


正确答案:错误
考察知识点:控制语句结构-循环
解析:while循环,i 从 0 开始,每次循环 i 加 1,直到 i < 10 不成立。i 的取值为 1,2,…,10,共循环 10 次。
n 初始为 0,每次循环 n += i,即 n = 1 + 2 + 3 + … + 10,计算结果为 55,输出55。表述错误。

在这里插入图片描述


正确答案:错误
考察知识点:基本数据类型
解析:数字常量 12 默认为int类型,浮点数常量 12.12默认为double类型,int类型和double类型可以进行运算,运算中会将int类型转成double类型,运算结果为double类型,不会报错。表述错误。

在这里插入图片描述


正确答案:错误
考察知识点:控制语句结构-循环、continue语句
解析:count 初始为 0,循环条件是 count < 5。每次循环 count 加 1,当 count == 3 时执行 continue(跳过本次循环剩余代码,进入下一次循环)。
count 的取值依次为 1,2,4,5(当 count=3 时跳过输出但继续循环),当 count=5 时,循环条件 count < 5 不成立,循环结束。因此不会导致无限循环。 表述错误。

在这里插入图片描述


正确答案:正确
考察知识点:控制语句结构-循环
解析:初始化a = 0(对应斐波那契数列第 1 个数),b = 1(对应第 2 个数)。
循环执行n次:
每次先输出a;
然后通过b = b + a计算下一个数的和,再通过a = b - a更新a为原来的b(即下一个斐波那契数)。
例如,若n = 5,输出为0 1 1 2 3,符合斐波那契数列规律,因此该代码能实现功能。表述正确。

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

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

本题考察分支结构。

解析:方案1:满 x 元减 y 元,只能使用一次 。 方案2:直接打 n 折,也就是说价格变为原先的 n/10,输入为四个正整数,直接写n/10会导致丢小数点后数据,因此要写成n/10.0。

#include<bits/stdc++.h>usingnamespace std;intmain(){int x, y, n, p; cin>>x>>y>>n>>p;//方案1:满 x 元减 y 元,只能使用一次 double t1=(p>=x?p-y:p);//这里使用了条件运算符代替双分支语句//方案2:直接打 n 折,注意数据类型 double t2=p*n/10.0;//比较方案1和方案2,保留两位小数输出方案1和方案2中更小的那一个if(t1<t2)printf("%.2lf", t1);elseprintf("%.2lf", t2);return0;}
在这里插入图片描述


在这里插入图片描述

本题考察 循环结构。

一共n层,遍历n层,依次将每层的石块进行累加,根据题意,第i层需要i*i个石块。

#include<bits/stdc++.h>usingnamespace std;intmain(){int n,s=0;//注意累加求和的s要初始化为0  cin>>n;//遍历n层,依次将每层的石块进行累加 for(int i=1; i<=n; i++){ s+=i*i;//根据题意,第i层需要i*i个石块 } cout<<s;return0;}

Read more

【2026版】macOS 使用 Homebrew 快速安装 Java 21 教程

在 macOS 上配置 Java 环境时,很多开发者会遇到 no bottle available 或环境变量配置失效的问题。本文将介绍目前最稳定、最推荐的安装方式:使用 Homebrew Cask 安装 Eclipse Temurin。 为什么选择 Temurin? * 兼容性好:前身为 AdoptOpenJDK,是目前最主流的 OpenJDK 发行版。 * 安装简单:使用 Cask 安装会自动放入系统目录,无需手动配置繁琐的 PATH。 * 识别率高:IntelliJ IDEA、Eclipse 等 IDE 可以直接识别,无需寻找隐藏路径。 🚀 安装步骤 1. 确保 Homebrew 已更新 在安装任何新软件包之前,建议先更新 Homebrew 索引: brew

By Ne0inhk
告别 IDEA,拥抱 Trae:一位 Java 后端程序员的真实迁移体验

告别 IDEA,拥抱 Trae:一位 Java 后端程序员的真实迁移体验

作为一名常年和 Spring Boot、微服务打交道的 Java 开发者,IDEA 几乎是我过去几年的 “本命 IDE”。但最近,我彻底把主力开发环境换成了Trae。这不是跟风尝鲜,而是真实体验到效率、流畅度与 AI 能力的全面升级。 这篇文章,我用最实在的体验,告诉你Java 程序员从 IDEA 迁移到 Trae 到底值不值、怎么迁、踩过哪些坑、带来哪些爽点。 一、为什么我会从 IDEA 转向 Trae? 先说说我放弃 IDEA 的核心原因: 1. 启动慢、吃内存:项目稍大就卡,开机启动要等半天 2. 插件臃肿:很多功能用不上,却占资源 3. AI 能力弱:自带补全跟不上时代,装插件又不稳定

By Ne0inhk
JAVA 异常处理:从原理到实战最佳实践

JAVA 异常处理:从原理到实战最佳实践

JAVA 异常处理:从原理到实战最佳实践 1.1 本章学习目标与重点 💡 掌握异常的分类与核心概念,理解异常处理的设计思想。 💡 熟练运用 try-catch-finally、throws、throw 处理异常。 💡 掌握自定义异常的编写与使用场景,规范异常处理流程。 ⚠️ 本章重点是 异常处理的最佳实践 和 避免常见误区,这是提升代码健壮性的核心技能。 1.2 异常的核心概念与分类 1.2.1 什么是异常 💡 异常是指程序运行过程中出现的非正常情况,它会中断程序的正常执行流程。 比如文件找不到、数组下标越界、空指针访问等,这些情况都会触发异常。 Java 中所有异常都是 Throwable 类的子类,异常处理的本质是捕获并处理这些非正常情况,保证程序可以继续运行或优雅退出。 1.2.2 异常的分类 Java 中的异常体系分为三大类,它们的父类都是 Throwable: * 是 JVM 内部的严重错误,

By Ne0inhk
【Java 开发日记】我们来说一下无锁队列 Disruptor 的原理

【Java 开发日记】我们来说一下无锁队列 Disruptor 的原理

目录 一、为什么需要 Disruptor?—— 背景与问题 二、核心设计思想 三、核心组件与原理 1. 环形缓冲区(Ring Buffer) 2. 序列(Sequence) 3. 序列屏障(Sequence Barrier) 4. 等待策略(Wait Strategy) 5. 事件处理器(EventProcessor) 6. 生产者(Producer) 四、工作流程示例(单生产者 -> 单消费者) 五、多消费者与依赖关系 六、总结:Disruptor 高性能的秘诀 一、为什么需要 Disruptor?—— 背景与问题 在高并发编程中,传统的队列(如 java.

By Ne0inhk