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

2025 年 9 月 GESP C++ 三级真题解析

2025 年 9 月 GESP C++ 三级考试真题解析,涵盖单选题、判断题及编程题。内容包括基础语法、数组操作、函数调用、枚举类型及文件包含等知识点分析。编程题涉及数组清零模拟与日历格式化输出,提供完整 C++ 代码实现与解题思路。

全栈工匠发布于 2026/3/15更新于 2026/5/2730 浏览
2025 年 9 月 GESP C++ 三级真题解析

一、单选题

第 1 题

文章配图

解析:

答案 C,a、b 都为 int,计算不出小数部分,10/3=3

第 2 题

文章配图

解析:

答案 C,

(10!=10) || (5>=3) false || true true
第 3 题

文章配图

解析:

答案 D,arr[5]数组,最后一个元素的下标是 4

第 4 题

文章配图

解析:

答案 B,

文章配图

第 5 题

文章配图

解析:

答案 B,创建函数的格式如下

返回值类型 函数名 (参数列表) { // 函数体:实现具体功能的代码 语句块; return 返回值; // 若返回值类型非 void,需返回对应类型的值 }
例如创建'实现加法函数'int add(int a,int b) { return a+b; }
第 6 题

文章配图

解析:

答案 B,

int arr[4]={1,2,3}; // arr[0]=1 arr[1]=2 arr[2]=3 arr[3]=arr[0]+arr[2]; //arr[3]=1+3=4 
第 7 题

文章配图

解析:

答案 B,

A 选项,void 表示无返回参数

文章配图

B 选项,通过函数引用传递,间接返回多个值

文章配图

C 选项,main()调用会导致无限循环

文章配图

D 选项,无法嵌套定义函数

文章配图

第 8 题

文章配图

解析:

答案 D,continue 导致 count++一直没有执行

第 9 题

文章配图

解析:

答案 A,

第 10 题

文章配图

解析:

答案 C,

文章配图

第 11 题

文章配图

解析:

答案 D,int 的最大值是 2147483647,反转后就是 7463847412,7 要改为 1 否则 int 存储不了,即为 1463847412

第 12 题

文章配图

解析:

答案 C,假设 arr[0]是最大值,之后在循环和后面所有数据做比较

第 13 题

文章配图

解析:

答案 D,

A 选项,不只有值传递

文章配图

B 选项,形参调用完后,内存会自动释放

文章配图

C 选项,不声明 void,也可以没返回值

文章配图

第 14 题

文章配图

解析:

答案 C,

第一处:for 循环,不能 SIZE,会造成数组越界

第二处:cout<<arr[SIZE] 会造成数组越界

第 15 题

文章配图

解析:

答案 D,

A 选项,char 数组需要用 strcpy

#include<bits/stdc++.h> using namespace std; int main() { string s1="abc"; char s2[]="abc"; strcpy(s2,"bcd"); cout<<s2; return 0; }

B 选项,string 获取长度用 size 或 length,char 数组要用 strlen

#include<bits/stdc++.h> using namespace std; int main() { string s1="abc"; char s2[]="abc"; cout<<s1.length()<<" "<<s1.size()<<endl; cout<<strlen(s2); return 0; }

C 选项,string 的长度就是动态变化的

D 选项,string 和 char 数组不能用==判断相等

二、判断题

第 1 题

文章配图

解析:

答案×,sizeof 是获取数据类型所占内存大小,1 是因为 'a'是 char 类型

第 2 题

文章配图

解析:

答案√,

#include<bits/stdc++.h> using namespace std; int a;//全局变量 int main() { cout<<a;//0 }
第 3 题

文章配图

解析:

答案√,会先 do,在进行 while 判断,所以至少执行一次

第 4 题

文章配图

解析:

答案√,

#include<bits/stdc++.h> using namespace std; int main() { int a=1; cout<<a++<<endl;//1 cout<<++a;//3 }
第 5 题

文章配图

解析:

答案×,是 color 类型

#include <iostream> using namespace std; // 定义枚举类型 Color enum Color { RED, GREEN, BLUE }; int main() { // 枚举常量的类型是 Color,而非 int Color c = RED; // 正确:RED 是 Color 类型,可赋值给 Color 变量 return 0; }
第 6 题

文章配图

解析:

答案×,

#include <iostream> using namespace std; #define SQUARE(x) x*x; int main() { cout<<SQUARE(2+3);// 2+3*2+3=11 return 0; }
第 7 题

文章配图

解析:

答案×,是 0 至 127,对应 ASCII 表

文章配图

第 8 题

文章配图

解析:

答案×,当 b 是 string 类型,b=10 会不合法

第 9 题

文章配图

解析:

答案×,

#include"file.h" 是从本地文件开始搜索,搜索不到,就查找 C++库文件 #include<file.h> 是直接查找 c++库文件
第 10 题

文章配图

解析:

答案×,

#include <iostream> using namespace std; // 变量定义(分配内存),作用域内仅一次 int a = 10; int main() { // extern 声明(仅表明变量在别处定义,可多次出现) extern int a; // 若尝试'定义'多次,会报错 int a = 20; // 错误:同一作用域内变量定义重复 return 0; }

三、编程题

第 1 题 [GESP202509 三级] 数组清零

题目描述

小 A 有一个由 n 个非负整数构成的数组 a=[a1,a2,…,an]。他会对阵组 a 重复进行以下操作,直到数组 a 只包含 0。在一次操作中,小 A 会依次完成以下三个步骤:

  1. 在数组 a 中找到最大的整数,记其下标为 k。如果有多个最大值,那么选择其中下标最大的。
  2. 从数组 a 所有不为零的整数中找到最小的整数 aj。
  3. 将第一步找出的 ak 减去 aj。

例如,数组 a=[2,3,4] 需要 7 次操作变成 [0,0,0]:

[2,3,4]→[2,3,2]→[2,1,2]→[2,1,1]→[1,1,1]→[1,1,0]→[1,0,0]→[0,0,0]

小 A 想知道,对于给定的数组 a,需要多少次操作才能使得 a 中的整数全部变成 0。可以证明,a 中整数必然可以在有限次操作后全部变成 0。你能帮他计算出答案吗?

输入格式

第一行,一个正整数 n,表示数组 a 的长度。

第二行,n 个非负整数 a1,a2,…,an,表示数组 a 中的整数。

输出格式

一行,一个正整数,表示 a 中整数全部变成 0 所需要的操作次数。

输入输出样例

输入 #1

3 2 3 4

输出 #1

7

输入 #2

5 1 3 2 2 5

输出 #2

13

说明/提示

对于所有测试点,保证 1 ≤ n ≤ 100,0 ≤ ai ≤ 100。

参考代码
#include <bits/stdc++.h> using namespace std; int main(){ //1)填充数据 //1.1)确定大小 n int n;cin>>n; //1.2)确定数组 int a[110]={}; for(int i=1;i<=n;i++) cin>>a[i]; //2)模拟'数组清零' int ans=0; while(true){ int maxx=INT_MIN,max_i,minn=INT_MAX; for(int i=1;i<=n;i++){ if(a[i]!=0){ //2.1)找到最大值的下标 if(a[i]>=maxx){ maxx=a[i]; max_i=i; } //2.2)找到最小值 if(a[i]<minn) minn=a[i]; } } //2.3)判断是否找到最大值 if(maxx==INT_MIN) break; //2.4)修改 a[max_i]=a[max_i]-minn; a[max_i]=a[max_i]-minn; ans++; } cout<<ans; } 

第 2 题 [GESP202509 三级] 日历制作

题目描述

小 A 想制作 2025 年每个月的日历。他希望你能编写一个程序,按照格式输出给定月份的日历。

具体来说,第一行需要输出 MON TUE WED THU FRI SAT SUN,分别表示星期一到星期日。接下来若干行中依次输出这个月所包含的日期,日期的个位需要和对应星期几的缩写最后一个字母对齐。例如,2025 年 9 月 1 日是星期一,在输出九月的日历时,1 号的个位 1 就需要与星期一 MON 的最后一个字母 N 对齐。九月的日历输出效果如下:

MON TUE WED THU FRI SAT SUN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 

你能帮助小 A 完成日历的制作吗?

输入格式

一行,一个正整数 m,表示需要按照格式输出 2025 年 m 月的日历。

输出格式

输出包含若干行,表示 2025 年 m 月的日历。

输入输出样例

输入 #1

9

输出 #1

MON TUE WED THU FRI SAT SUN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

输入 #2

6

输出 #2

MON TUE WED THU FRI SAT SUN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

说明/提示

对于所有测试点,保证 1 ≤ m ≤ 12。

参考代码
#include <bits/stdc++.h> using namespace std; int main(){ //1)确定月份 m int m;cin>>m; //2)数组标记 月份 空格 int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int kong[13]={0,2,5,5,1,3,6,1,4,0,2,5,0}; //3)输出 顶部英文 cout<<"MON TUE WED THU FRI SAT SUN"<<endl; //4)输出空格 for(int i=1;i<=kong[m];i++){ cout<<" "; } //5)输出数字 for(int i=1;i<=days[m];i++){ printf("%3d ",i); if( (kong[m]+i)%7==0 ) cout<<endl; } } 

目录

  1. 一、单选题
  2. 第 1 题
  3. 第 2 题
  4. 第 3 题
  5. 第 4 题
  6. 第 5 题
  7. 第 6 题
  8. 第 7 题
  9. 第 8 题
  10. 第 9 题
  11. 第 10 题
  12. 第 11 题
  13. 第 12 题
  14. 第 13 题
  15. 第 14 题
  16. 第 15 题
  17. 二、判断题
  18. 第 1 题
  19. 第 2 题
  20. 第 3 题
  21. 第 4 题
  22. 第 5 题
  23. 第 6 题
  24. 第 7 题
  25. 第 8 题
  26. 第 9 题
  27. 第 10 题
  28. 三、编程题
  29. 第 1 题 [GESP202509 三级] 数组清零
  30. 题目描述
  31. 输入格式
  32. 输出格式
  33. 输入输出样例
  34. 说明/提示
  35. 参考代码
  36. 第 2 题 [GESP202509 三级] 日历制作
  37. 题目描述
  38. 输入格式
  39. 输出格式
  40. 输入输出样例
  41. 说明/提示
  42. 参考代码
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 Streamlit 与腾讯云混元快速搭建 LLM 聊天应用
  • 按下 F5 后,浏览器前端究竟发生了什么?
  • 基于数据流架构扩展 RAG 提升大模型准确度
  • 云开发 Copilot:AI 如何重塑开发流程
  • Mac mini M4 部署 OpenClaw + Ollama 本地大模型接入飞书机器人
  • 企业大模型微调项目落地实施的关键岗位角色及职责
  • AIGC 产品经理面试高频 100 题及核心解析
  • AI 前端核心概念、技术栈与学习路线详解
  • 2026 年 AI 辅助编程工具对比:Copilot、Cursor、Claude Code 与 Codex 解析
  • 大模型微调实战:LLaMA-Factory 快速上手
  • 鸿蒙 ArkUI 组件复用指南:@Reusable 装饰器与 NodePool 方案
  • C++ 单词翻转:手动实现与标准库对比
  • 数据结构:二叉树概念与堆实现详解
  • Arduino BLDC 自主巡逻机器人设计与实现(避障 + 路径规划)
  • C++ STL 容器适配器:Stack、Queue 及 Priority Queue 详解
  • 深度学习模型优化策略与实战调参
  • Java 面试题及答案汇总
  • 使用 MCP Server 插件将 Dify 工作流发布为第三方服务
  • MySQL 从下载到运行:详细安装配置教程
  • N8N 对接飞书多维表:数据增删改查实战指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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