当前位置: 首页 > news >正文

2025年09月 GESP等级认证C++编程(一级)试题解析

【单选题】

1、(2分)人工智能现在非常火,小杨就想多了解一下,其中就经常听人提到“大模型”。那么请问这里说的“大模型”最贴切是指?( )

A、大电脑模型 B、大规模智能 C、智能的单位 D、大语言模型

正确答案:D

试题解析:大电脑模型,一般没有此说法;

大规模智能,范围太宽泛,表述模糊;

智能的单位,和题意不符;

目前提到的“大模型”就是指 大语言模型,比如 GPT 系列、ChatGPT 等。

因此最贴切的答案是D:大语言模型。

2、(2分)小杨这学期刚开学就选修了一门编程课,然后就想编写程序来计算1到10001之间的所有偶数的和。

他希望程序采用简单累加整数的方法,同时希望源程序尽可能清晰、简洁,则下面关于实现累加时采用的主要控制结构的哪个说法最不合适?( )

A、使用循环结构 B、使用循环和分支的组合 C、仅使用顺序结构 D、不使用分支结构

正确答案:C

试题解析:循环从 1 到 10001,判断每个数是否为偶数,然后累加。选项A、B均可以实现。

不使用分支结构也可以做到,比如循环步长为 2,选项D可以实现。

顺序结构没有循环和分支,如果不用循环,逐个累加10000次,这显然不现实。

3、(2分)下面的C++代码用于输入姓名,然后输出姓名,正确的说法是?( )

string XingMing; cout << "请输入您的姓名:"; cin >> XingMing; cout << XingMing;

A、XingMing 是汉语拼音,不能作为变量名称 B、可以将 XingMing 改为 Xing Ming

C、可以将 XingMing 改为 xingming D、可以将 XingMing 改为 Xing-Ming

正确答案:C

试题解析:变量名只能包括英文半角字母和数字,并且不能以数字开头;

XingMing是符合变量的定义规则,选项A错误;

变量名不能包括空格,选项B错误;

变量名中不能包括-符号,选项D错误;

本题答案为选项C。

4、(2分)下列C++ 代码中a和b都是整型变量,执行后,其结果是?( )

a = 13; b = 5; cout << a / b << a % // b << a % b; a * b;

A、2 3 B、23 C、20 D、以上都不准确

正确答案:C

试题解析:C++中,一行中//后面的部分为注释内容,可以忽略,因此输出语句相当于:

cout << a / b << a % a * b;

计算 a / b是整数除法,结果舍弃小数为整数2;

先计算a % a结果为0,再计算,0*b=0,因此输出0;

故执行结果为:20。

5、(2分)C++表达式 3 * 4 % 5 / 6 的值是?( )

A、10 B、5 C、2 D、0

正确答案:D

试题解析:根据优先级,先计算3*4=12,再计算12%5=2,最后计算:2/6,整数除法,结果为0。

6、(2分)下面的C++代码中变量 N 和 M 都是整型,则执行时如果先输入 10 并输入一个制表符后输入 20 并回车,其输出的数值是?( )

scanf("%d", &N); scanf("%d", &M); printf("{%d}",N+M);

A、{30} B、1020 C、{N+M} D、不输出,继续等待输入

正确答案:A

试题解析:scanf() 读取整数,遇到空白字符(包括空格、制表符、回车),会停止读取;

所以scanf("%d", &N);读取整数10,遇到制表符,读取N的值为10;

scanf("%d", &M);读取整数20,遇到回车,读取M的值为20;

所以N+M的值为30,按照printf()输出格式为:{30}。

7、(2分)当前是9月,编写C++代码求 N 个月后的月份。横线处应填入的代码是?( )

int N, M; cin >> N; M = _____________; if (M == 0) printf("%d个月后12月", N); else printf("%d个月后是%d月", N, M);

A、N % 12 B、9 + N % 12 C、(9 + N) / 12 D、(9 + N) % 12

正确答案:D

试题解析:当前是 9 月,经过 N 个月后,月份应该是 (9 + N) % 12,结果范围是0-11,但月份是 1~12,所以这里的0代表12月。

本题答案为选项D。

8、(2分)下面C++代码执行后的输出是?( )

int n = 0; for (int i = 0; i < 100; i++) n += i % 2; cout << n;

A、5050 B、4950 C、50 D、49

正确答案:C

试题解析:循环i的值为0到99,如果i为偶数,i%2为0,n += i%2 相当于没加;

如果i为奇数,i%2为1,n的值加1,0到99有50个奇数,所以n最终为50。

9、(2分)下面的C++代码执行后输出是?( )

int N = 0, i; for (i = -100; i < 100; i++) N += i % 10; cout << N;

A、900 B、100 C、0 D、-100

正确答案:C

试题解析:循环中i从-100到99,其中i是10的倍数时候,i%10为0,不会改变 N 的值;

所以N 的值为:-9、-8、……、-1,……,1、2、……、9,这些数相加,所有正数和负数刚好抵消,结果为0。

10、(2分)下面C++代码执行后输出是?( )

int i; for(i = 1; i < 5; i++) { if(i % 3 == 0) break; printf("%d#", i); } if(i > 5) printf("END\n");

A、1#2# B、1#2#END C、1#2 D、1#2#3#4#END

正确答案:A

试题解析:循环中,i从1开始,当i为1、2时候输出1#2#,当i为3时候,满足i%3==0的条件,循环终止,所以i最终为3,不满足i>5的条件,不会输出:END。

11、(2分)下面的C++代码用于求 N 的镜面数(N 的个位到最高位的各位数字依次反过来出现在数字中,但高位 0 将被忽略,不输出),如输入1234,则将输出 4321 ,又如输入120,则将输出 21 ,错误的选项是?( )

cout << "请输入个位数不为0的正整数:"; cin >> N; rst = 0; // 保存逆序结果 while (______________) { rst = rst * 10 + N % 10; N = N / 10; } cout << rst << endl;

A、N != 0 B、not (N == 0) C、N = 0 D、N > 0

正确答案:C

试题解析:程序是求 N 的逆序数,循环需要取出N的各位数字。

选项 A和B,都是 N 不为 0,选项D,N 〉0,循环条件都可以逐位取出;

选项C是赋值语句,循环条件始终为假,循环不执行,故C错误。

12、(2分)下面C++代码用于交换两个正整数 a 和 b 的值,不能实现交换的代码是?( )

A、

cout << "输入第一个正整数: "; cin >> a; cout <<"输入第二个正整数: "; cin >> b; temp = a; a = b; b = temp; cout << "a=" << a << " b=" << b << endl;

B、

cout << "输入第一个正整数: "; cin >> a; cout <<"输入第二个正整数: "; cin >> b; b = a - b; a = a - b; b = a + b; cout << "a=" << a << " b=" << b << endl;


C、

cout << "输入第一个正整数: "; cin >> a; cout <<"输入第二个正整数: "; cin >> b; a = a + b; b = a - b; a = a - b; cout << "a=" << a << " b=" << b << endl;

D、

cout << "输入第一个正整数: "; cin >> a; cout <<"输入第二个正整数: "; cin >> b; a, b = b, a; cout << "a=" << a << " b=" << b << endl;

正确答案:D

试题解析:C++不支持使用a, b = b, a;的形式进行交换,实际上 a, b = b, a 被解析为三条语句:

(a), (b = b), (a),即a、b值无变化。

本题答案为选项D。

13、(2分)下面C++代码用于获得正整数 N 的第 M 位数,约定个位数为第1位,如 N 等于1234,M 等于2,则输出3。

假设 M 的值是大于等于1且小于等于 N 的位数。横线处应填入的代码是?( )

int N, M, div=1; cout << "请输入一个正整数:"; cin >> N; cout <<"请输入从右到左取第几位数:"; cin >> M; for (int i =0; i < (M - 1); i++) div *= 10; cout << (______________);

A、N % div / 10 B、N / div / 10 C、N % div % 10 D、N / div % 10

正确答案:D

试题解析:要获取 N 的第 M 位(从右到左),先将 N 除以 (M-1)次 10,去掉右边的 M-1位,再对 10 取余,得到当前的最后一位,即第 M 位。

程序先计算div为 M - 1 个10相乘,所以横线处应为:N / div % 10。

14、(2分)下面C++代码执行后输出是?( )

num = 0; while (num <= 5) { num += 1; if (num == 3) continue; printf("%d#", num); }

A、1#2#4#5#6# B、1#2#4#5#6 C、1#2#3#4#5#6# D、1#2#3#4#5#6

正确答案:A

试题解析:第1次循环,num加1后为1,输出1#;

第2次循环,num加1后为2,输出2#;

第3次循环,num加1后为3,执行continue;

第4次循环,num加1后为4,输出4#;

第5次循环,num加1后为5,输出5#;

第6次循环,num加1后为6,输出6#;

此时不满足num<=5条件,循环结束。

本题答案为选项A。

15、(2分)下面C++代码用于记录多个输入数中的最大数和最小数(输入 -999 则输入结束),相关说法【错误】的是?( )

cin >> now_num; min_num = max_num = now_num; while (now_num != -999) { if (max_num < now_num) max_num = now_num; if (min_num > now_num) min_num = now_num; cin >> now_num; } cout << min_num << ' ' << max_num;

A、程序运行时如果第一个数输入 -999 ,则输出将是 -999 -999

B、程序输入过程中,如果输入的第一个数不是 -999 ,则如果待输入的数据中没有 -999 ,则程序能求出已输入整数中的最大数和最小数

C、如果用于输入考试成绩,即成绩中不可能有 -999 ,则程序能求出已输入成绩中的最高成绩和最低成绩

D、可以将第一个 cin >> now_num; 移动到 while (now_num != -999) { 下面,结果不变

正确答案:D

试题解析:选项A,若第一个数输入 -999,循环不执行,直接输出:-999 -999,正确;

选项

B,若第一个数不是 -999,如果输入中无 -999,程序循环不会结束,可以计算已输入数的最大最小数,正确;

选项C,考试成绩无-999,程序能正常读取所有成绩并求最值,正确;

选项D,若将第一个 cin >〉 now_num; 移到循环内,进入循环前 now_num 值不确定,可能导致错误。

【判断题】

16、(2分)在集成开发环境里调试程序时,要注意不能修改源程序,因为如果修改,就要终止调试、关闭该文件并重新打开,才能再次开始调试。( )

正确答案:错误

试题解析:多数集成开发环境如 VS 等,调试时修改源程序,无需关闭文件,保存后重新编译即可继续调试。

17、(2分)执行C++表达式 10 % 0.5 将报错,因为 0.5 所在位置只能是整数。( )

正确答案:正确

试题解析:C++ 中 % 运算符要求操作数必须是整数,0.5 是浮点数,使用 10 % 0.5 会报错。

18、(2分)下面C++代码执行后将输出 9 。( )

for (i = 0; i < 10; i++) break; cout << i;

正确答案:错误

试题解析:循环中 i 初始为 0,第一次进入循环就执行 break,循环结束,此时输出 i 的值为 0 而非 9。

19、(2分)下面C++代码执行后将输出 55 。( )

n = 0; for (int i = 0; i > -10; i--) n = n + i * -1; cout << n;

正确答案:错误

试题解析:i的初始为0,循环执行的条件是 i>-10,i值每次减少1,所以i的值为:0、-1、-2、……、-9;

循环体内把i的值乘以-1后累计到n中,即累计:0、1、2、……、9,结果为45。

20、(2分)将下面C++代码中的 L1 行的 i = 0 修改为 i = 1 , 其输出与当前代码输出相同。( )

cnt = 0; for (int i = 0; i < 100; i++) // L1 cnt += i; cout << cnt

正确答案:正确

试题解析:程序是求1到100的和,修改为 i = 1,少累加一个0,结果不变。

21、(2分)将下面C++代码中的 i < 10 修改为 i <= 10 ,其执行后输出相同。( )

int n, i; n = i = 0; while (i < 10) { n += i; i += 1; } cout << n;

正确答案:错误

试题解析:while循环中i每次加1,修改为i<=10后,循环将多执行一次,会多累加一次i,执行结果会改变。

22、(2分)下面的C++代码执行后将输出 45 。( )

int n, i; n = i = 0; while (i < 10){ i += 1; n += i; } cout << n;

正确答案:错误

试题解析:n和i初值为0,循环条件是i<10;

循环中,每次i的值先加1,然后累加到n中,最后一次循环,i为9(满足i<10),i加1后为10,然后将10累计到n,所以n的值是:1+2+……+10,结果应该是55。

23、(2分)执行C++代码 cout << (12 + 12.12) 将报错,因为 12 是 int 类型,而 12.12 是 float 类型,不同类型不能直接运算。( )

正确答案:错误

试题解析:在 C++ 中,当 int 类型和 double 类型进行算术运算时,会进行隐式类型转换(整型提升为浮点型),然后进行计算,结果类型为 double,cout << (12 + 12.12) 会输出 24.12,不会报错。

24、(2分)下面C++代码执行时将导致无限循环(也称死循环)。( )

while (count < 5) { count += 1; if (count == 3) continue; cout << count << ' '; }

正确答案:错误

试题解析:while的循环条件是count<5,循环体内count值每次加1,虽然count的初值没有给出,但无论count是<5或者>=5,始终会达到<5的条件不成立的时候,此时循环会结束,不会形成死循环。

25、(2分)下列C++代码用于求斐波那契数列,即第1个数为0,第2个数为1,从第三个数开始,依次是其前两个数之和。如果输入的值为大于 1 的正整数,该代码能实现所求。( )

cin >> n; a = 0, b = 1; for (int j = 0; j < n; j++) { cout << a << " "; b = b + a; a = b - a; }

正确答案:正确

试题解析:代码中 a 初始为 0(第 1 个数) ,b 为 1(第 2 个数)。

循环 n 次,每次输出 a 后,通过计算更新 a 和 b,依次得到 0、1、1、2、3… 符合斐波那契数列规律,输入大于 1 的正整数时可正确输出。

【编程题】

26、(25分)商店折扣

时间限制:1 s,内存限制:512 MB

【问题描述】

商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满 x 元减 y 元;第二种方案是直接打 n 折,也就是说价格变为原先的 n / 10。这里的 x、y、n 均是正整数,并且 1 <= y < x,1<= n <10 。

需要注意的是,第一种方案中满减优惠只能使用一次。例如购物满 10 元减 3 元时,若挑选了价格总和为 33 元的物品,只能减免 3 元,需要支付 30 元。

小明在商店挑选了价格总和为 p 元的物品,结账时只能使用一种优惠方案。小明最少需要支付多少钱呢?

【输入描述】

四行,四个正整数 x、y、n、p,含义见题目描述。

【输出描述】

一行,一个小数,表示小明最少需要支付多少钱,保留两位小数。

【样例输入1】

8

7

9

10

【样例输出1】

3.00

【样例输入2】

8

7

2

11

【样例输出2】

2.20

【数据范围】

对于所有测试点,保证 1 <= y < x,1<= n <10,1 <= p < 100。

【参考程序】

#include <iostream> using namespace std; int x, y, n, p; float a1, a2; int main() { cin >> x >> y >> n >> p; a1 = p; if (a1 >= x) a1 -= y; a2 = p * n / 10.0; printf("%.2f\n", min(a1, a2)); return 0; }

27、(25分)金字塔

时间限制:1 s,内存限制:512 MB

金字塔由 n 层石块垒成。从塔底向上,每层依次需要 n×n、(n-1)× (n-1)、……、2× 2、1× 1 块石块。请问搭建金字塔总共需要多少块石块?

【输入描述】

一行,一个正整数 n,表示金字塔的层数。

【输出描述】

一行,一个正整数,表示搭建金字塔所需的石块数量。

【样例输入1】

2

【样例输出1】

5

【样例输入2】

5

【样例输出2】

55

【数据范围】

对于所有测试点,保证 1 <= n <= 50 。

【参考程序】

#include <iostream> using namespace std; int n, ans; int main() { cin >> n; for (int i = 1; i <= n; i++) ans += i * i; cout << ans << endl; return 0; }
http://www.jsqmd.com/news/965088/

相关文章:

  • 别再为多重共线性发愁了!用Python的sklearn快速上手岭回归实战
  • 2022年软考-公司人事管理—软件设计师—东方仙盟
  • 2026年当下,如何选择一家靠谱的烘焙烤箱销售厂家?这份业内推荐请收好 - 2026年企业资讯
  • 瑞德克斯信息服务平台节奏易懂吗?
  • 实打实口碑!2026年6月上海松江区靠谱银元回收+老银锭回收店铺推荐 - 沪上贵金属口碑推荐官
  • 2026年 松下万宝压缩机厂家推荐:高效节能/稳定耐用的空调与冷柜压缩机优选品牌解析 - 品牌企业推荐师(官方)
  • SPI驱动开发实战:轮询、中断与DMA模式详解与性能优化
  • 2026年Q2非晶带焊料评测:银焊膏、锡焊膏、锡青铜焊膏、镍焊膏、阻流剂、预制成型件、颗粒焊料、黄铜焊膏、定制焊料选择指南 - 优质品牌商家
  • 黑客必备的一体化黑客工具
  • TMS320F280049C ADC实战:从ePWM触发到多通道采样,一个电机控制工程师的配置笔记
  • Solidity Gas 优化底座:从 EVM 字节码、Opcode 内存布局到 Yul 汇编底层压榨算力实战
  • 后端 API 设计:RESTful 与 GraphQL 的架构权衡与实战选择
  • 别再纠结了!手把手教你为STM32项目挑选最合适的调试器(J-Link/ST-Link/CMSIS-DAP对比)
  • 银行级机器学习系统:从模型上线到生产就绪的工程实践
  • 国内预制成型钎焊制品供应商综合实力排行盘点:金基焊料/钛基焊料/钯基焊料/铝焊膏/银焊膏/锡焊膏/锡青铜焊膏/镍焊膏/选择指南 - 优质品牌商家
  • 2026年 重锤料位计厂家推荐:精准测量/抗粉尘/耐高温,工业物位监测优质品牌深度解析 - 品牌企业推荐师(官方)
  • CSDN AI数字营销权限体系深度拆解(含官方未公开的L4-L6高阶权限清单)
  • 2026年通辽市名气TOP5装饰公司客观盘点:通辽靠谱装修/通辽二手房翻新/通辽别墅装修/通辽大宅装修/通辽大平层装修/选择指南 - 优质品牌商家
  • 导入模板下载
  • 别再为多重共线性头疼了!用sklearn的RidgeCV和Lasso搞定你的回归模型(附Longley数据集实战)
  • 微软董事霍夫曼将不参与连任竞选,欲专注人工智能药物研发初创公司
  • 2026年FY不锈钢液下泵权威品牌TOP5盘点:耐腐泵/耐腐耐磨液下泵/耐腐耐磨砂浆泵/耐腐耐腐循环泵/耐腐蚀离心泵/选择指南 - 优质品牌商家
  • 基于 Harmony 6.0 应用的健身训练计划生成器实现
  • C语言如何直接控制硬件指针、内存与寄存器
  • 思源宋体终极指南:7种字体样式完全免费商用方案
  • JVM 内存碎片治理:Java 堆外内存泄露诊断与 G1 混合垃圾回收区域(Mixed GC)碎片整理优化实战
  • 2026年主流陶瓷切削液供应商实力盘点:切削油、半合成切削液、氧化锆切削液、淬火油、淬火液、清洗剂、玻璃镜头切削液选择指南 - 优质品牌商家
  • 进一步优化LLM-Wiki大模型知识库,构建场景驱动的认知闭环
  • Git工作流实战:从‘ahead by N commits’提示,深入理解分支追踪与推送策略
  • 创新驱动 合规为基 一米臻选商业模式行业楷模