2026年3月GESP真题及题解(C++一级):交朋友

2026年3月GESP真题及题解(C++一级):交朋友

2026年3月GESP真题及题解(C++一级):交朋友

在这里插入图片描述

题目描述

班上有四个小朋友,身高为 H 1 , H 2 , H 3 , H 4 H_1, H_2, H_3, H_4 H1​,H2​,H3​,H4​,其中 Alice 的身高为 H 1 H_1 H1​。
Alice 想和她身高最接近的人交朋友。如果有多人符合,则 Alice 想和其中最矮的人做朋友。

输入格式

共 4 行,第 1 行包含一个整数 H 1 H_1 H1​,表示班上小朋友的身高。

输出格式

输出 1 行,一个整数 h ,表示 Alice 想交的朋友的身高。

样例

输入:

150 165 135 133 

输出:

135 

数据范围

  • 100 ≤ H i ≤ 199 100 \leq H_i \leq 199 100≤Hi​≤199
  • H i H_i Hi​ 互不相同

题目分析

本题要求找出与 Alice(身高为 H 1 H_1 H1​)身高最接近的小朋友。如果有多个小朋友与 Alice 的身高差相同,则选择其中最矮的那位。输入包含四个互不相同的整数(身高范围 100~199),输出为 Alice 想交的朋友的身高。

解题的关键在于:

  1. 分别计算 H 2 , H 3 , H 4 H_2, H_3, H_4 H2​,H3​,H4​ 与 H 1 H_1 H1​ 的绝对差值。
  2. 比较三个差值,记录当前最小差值及其对应的身高。
  3. 如果遇到相同差值,则比较身高,保留较矮的。
  4. 最终输出记录的身高。

思路分析1(一级考纲思路分析)

  • 首先读入四个身高值,分别存入变量 h1, h2, h3, h4
  • 初始化最小差值 minc 为 (h1) 与 (h2) 的差值绝对值,候选答案 ansh2
  • 依次处理 h3h4
    • 计算当前身高与 h1 的差值绝对值 c
    • 如果 c 小于 minc,则更新 mincans
    • 如果 c 等于 minc,则比较 ans 与当前身高,取较小的更新 ans
  • 最后输出 ans

思路总结:通过逐个比较保证了“最接近”优先,“更矮”次之的规则。

AC代码1(一级考纲思路代码)

#include<bits/stdc++.h>// 万能头文件,包含常用的标准库usingnamespace std;int h1, h2, h3, h4;// 定义四个整数变量,存储四个小朋友的身高intmain(){// 读入四个身高值 cin >> h1 >> h2 >> h3 >> h4;// 计算 h1 与 h2 的绝对差值int c12 = h1 - h2;if(c12 <0) c12 =-c12;// 取绝对值// 计算 h1 与 h3 的绝对差值int c13 = h1 - h3;if(c13 <0) c13 =-c13;// 计算 h1 与 h4 的绝对差值int c14 = h1 - h4;if(c14 <0) c14 =-c14;// 初始化最小差值和答案(先假设 h2 是最佳人选)int minc = c12;int ans = h2;// 处理 h3:比较其差值与当前最小差值if(c13 < minc){ minc = c13;// 发现更小的差值,更新 ans = h3;}elseif(c13 == minc){// 差值相等,选择较矮的那个if(h3 < ans){ ans = h3;}}// 处理 h4:与当前最小差值比较if(c14 < minc){ minc = c14;// 差值更小,更新 ans = h4;}elseif(c14 == minc){// 差值相等,选较矮的if(h4 < ans){ ans = h4;}}// 输出最终答案 cout << ans << endl;return0;}

思路分析2(使用数组和abs函数思路)

算法思路:

  1. 读入四个身高,分别存入数组 h[1] 到 h[4],其中 h[1] 是 Alice 的身高。
  2. 初始化最小差值 minc 为一个较大的数(例如 100,因为身高范围 100~199,最大差不超过 99),并假设答案为 h[2](即先预设第二个小朋友为朋友)。
  3. 从 i = 2 到 4 遍历其余三位小朋友:
    • 计算当前小朋友身高与 Alice 身高的绝对差 c = |h[i] - h[1]|。
    • 如果 (c < minc),则更新最小差值和答案。
    • 如果 (c == minc) 且当前小朋友身高比已记录的答案更矮,则更新答案为当前身高。
  4. 输出最终答案。

由于题目保证身高互不相同,因此差值相等时两人身高必然不同,直接比较身高即可。

AC代码2(使用数组和abs函数代码)

#include<bits/stdc++.h>usingnamespace std;int h[5];// 用于存储四个小朋友的身高,下标 1~4 使用intmain(){// 输入四个身高for(int i =1; i <=4; i++){ cin >> h[i];}int minc =100;// 初始化最小差值,100 大于可能的最大差值 99int ans = h[2];// 先假设第二个小朋友是朋友(后续会根据条件更新)// 从第 2 个小朋友开始遍历到第 4 个(下标 2,3,4)for(int i =2; i <=4; i++){int c =abs(h[i]- h[1]);// 计算当前小朋友与 Alice 的身高差if(c < minc){// 发现更小的差值 minc = c; ans = h[i];}elseif(c == minc && h[i]< ans){// 差值相同且当前更矮 ans = h[i];}} cout << ans;// 输出最终选择的朋友身高return0;}

功能分析

  • 关键点:先比较绝对差,差值小的优先;差值相等时选更矮的。由于身高互异,不会出现差值相等且身高也相等的情况,因此逻辑无歧义。
  • 边界情况:身高范围 100~199,最大差为 99,初始 minc = 100 确保第一次比较一定会被更新。如果所有小朋友与 Alice 的差都大于 100,则可能出错,但此情况不存在(因为最大差为 99)。
  • 时间复杂度:仅遍历 3 个元素,常数时间,效率极高。
  • 空间复杂度:使用固定大小的数组,空间常数。
各种学习资料,助力大家一站式学习和提升!!!
#include<bits/stdc++.h>usingnamespace std;intmain(){ cout<<"########## 一站式掌握信奥赛知识! ##########"; cout<<"############# 冲刺信奥赛拿奖! #############"; cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

【秘籍汇总】(完整csp信奥赛C++学习资料):

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.ZEEKLOG.net/lecturer/7901 点击跳转

在这里插入图片描述
2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.ZEEKLOG.net/course/detail/40437 点击跳转

在这里插入图片描述
3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.ZEEKLOG.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.ZEEKLOG.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.ZEEKLOG.net/weixin_66461496/category_13113932.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.ZEEKLOG.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.ZEEKLOG.net/weixin_66461496/category_13125089.html 点击跳转

5、GESP C++考级真题题解:
在这里插入图片描述

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.ZEEKLOG.net/weixin_66461496/category_12858102.html 点击跳转

在这里插入图片描述

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.ZEEKLOG.net/weixin_66461496/category_12869848.html 点击跳转

在这里插入图片描述


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.ZEEKLOG.net/weixin_66461496/category_13117178.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespace std;intmain(){ cout<<"跟着王老师一起学习信奥赛C++"; cout<<" 成就更好的自己! "; cout<<" csp信奥赛一等奖属于你! ";return0;}
在这里插入图片描述

Read more

Flutter 组件 http_retry 的适配 鸿蒙Harmony 深度进阶 - 驾驭分布式负载感知重试、实现鸿蒙端高可靠通讯与协议幂等性审计方案

Flutter 组件 http_retry 的适配 鸿蒙Harmony 深度进阶 - 驾驭分布式负载感知重试、实现鸿蒙端高可靠通讯与协议幂等性审计方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 http_retry 的适配 鸿蒙Harmony 深度进阶 - 驾驭分布式负载感知重试、实现鸿蒙端高可靠通讯与协议幂等性审计方案 前言 在前文中,我们探讨了 http_retry 在鸿蒙(OpenHarmony)生态中解决单一移动终端弱网重试的基础实战。但在真正的“分布式工业物联网集成”、“跨设备协同办公资产同步”以及“需要对接具备动态压力管控的超大规模云原生后端”场景中。简单的指数退避往往难以应对复杂的网络分位震荡。面对一个需要在鸿蒙手机、智能穿戴设备与边缘网关之间,根据当前全网的平均负载压力(Load Pressure)动态调节重试节奏,并且要求在执行涉及核心资产变更(如:支付订单、库存锁定)的重试时执行绝对严密的协议幂等性(Idempotency)校验的高阶需求。如果缺乏一套具备分布式感知的重试调度模型。不仅会导致后端服务在故障恢复瞬间遭遇“重试波峰”引发再次崩溃,更会因为对非幂等操作的盲目重试。引发严重的业务资产错乱。 我们需要

By Ne0inhk
Flutter 三方库 brick_offline_first_with_supabase 深度鸿蒙离线缓存架构适配解析:极速搭建边缘物理存储与高可用同步中枢-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 brick_offline_first_with_supabase 深度鸿蒙离线缓存架构适配解析:极速搭建边缘物理存储与高可用同步中枢-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 brick_offline_first_with_supabase 深度鸿蒙离线缓存架构适配解析:极速搭建边缘物理存储与高可用同步中枢协同引擎 在开发需要高可用性和强离线能力的鸿蒙应用时,如何平衡云端实时性与本地响应速度是核心挑战。brick_offline_first_with_supabase 是一套成熟的离线优先(Offline First)数据流方案。本文将探讨该库在 OpenHarmony 环境下的深度集成与适配。 前言 什么是离线优先?它意味着应用的所有读写操作首选本地数据库,并由系统在后台自动处理与云端(Supabase)的增量同步。在鸿蒙这个强调无缝连接和万物互联的系统中,确保应用在电梯、地库等弱网环境下依然“丝滑”可用,是构建精品级鸿蒙应用的必修课。brick 库通过自动化的代码生成,极大地降低了这一架构的开发门槛。 一、原理解析 1.1 基础概念 该库主要集成了三层架构: * SqliteProvide

By Ne0inhk
你真的会打印日志吗?基于 Spring Boot 的全方位日志指南

你真的会打印日志吗?基于 Spring Boot 的全方位日志指南

—JavaEE专栏— 目录 * 一、日志概述:为什么它比 System.out.println 更重要? * 1.1 日志的核心用途 * 1.2 为什么弃用标准输出? * 二、日志框架体系:门面模式的深度解析 * 2.1 门面模式 (Facade Pattern) * 2.2 常见框架对比 * 三、实战:Spring Boot 日志的基本使用 * 3.1 传统方式获取日志对象 * 3.2 进阶方式:使用 Lombok (@Slf4j) * 四、深入理解日志级别 * 五、日志的高级配置 (application.yml) * 5.1 修改日志级别 * 5.

By Ne0inhk
【金仓数据库】ksql 指南(二) —— 创建与管理本地数据库

【金仓数据库】ksql 指南(二) —— 创建与管理本地数据库

引言 掌握了 ksql 对接本地 KingbaseES 数据库的基本操作之后,接下来要学习的是“数据库自身的运作”,数据库是数据存储的顶级容器,所有的表,视图等对象均依托数据库而存在,本文将会细致阐述怎样经由 ksql 命令行来完成本地数据库从“创建,查看,切换到删除”的全部操作,各个步骤均配有具体的实例以及需要注意的地方,从而保证初学者能够顺利实施。 文章目录 * 引言 * 一、前置条件:明确 “在哪操作”—— 权限库与连接状态 * 1.1 确认连接到 “权限库” * 1.2 确认当前用户权限(避免 “权限不足” 报错) * 二、创建本地数据库:两种核心方式(语句 / 工具) * 2.1 方式一:采用 CREATE DATABASE 语句来创建数据库(此方法较为推荐,

By Ne0inhk