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

四季读书网 3 0
2026年3月GESP真题及题解(C++一级):交朋友

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

2026年3月GESP真题及题解(C++一级):交朋友-第1张图片-四季读书网

题目描述

班上有四个小朋友,身高为 2026年3月GESP真题及题解(C++一级):交朋友-第2张图片-四季读书网,其中 Alice 的身高为 2026年3月GESP真题及题解(C++一级):交朋友-第3张图片-四季读书网 Alice 想和她身高最接近的人交朋友。如果有多人符合,则 Alice 想和其中最矮的人做朋友。

输入格式

共 4 行,第 1 行包含一个整数 2026年3月GESP真题及题解(C++一级):交朋友-第4张图片-四季读书网,表示班上小朋友的身高。

输出格式

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

样例

输入:

150 165 135 133

输出:

135  

数据范围

  • 2026年3月GESP真题及题解(C++一级):交朋友-第5张图片-四季读书网
  • 2026年3月GESP真题及题解(C++一级):交朋友-第6张图片-四季读书网
     互不相同

题目分析

本题要求找出与 Alice(身高为 2026年3月GESP真题及题解(C++一级):交朋友-第7张图片-四季读书网)身高最接近的小朋友。如果有多个小朋友与 Alice 的身高差相同,则选择其中最矮的那位。输入包含四个互不相同的整数(身高范围 100~199),输出为 Alice 想交的朋友的身高。

解题的关键在于:

  1. 分别计算 2026年3月GESP真题及题解(C++一级):交朋友-第8张图片-四季读书网 与 2026年3月GESP真题及题解(C++一级):交朋友-第9张图片-四季读书网 的绝对差值。
  2. 比较三个差值,记录当前最小差值及其对应的身高。
  3. 如果遇到相同差值,则比较身高,保留较矮的。
  4. 最终输出记录的身高。

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

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

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

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

#include<bits/stdc++.h>// 万能头文件,包含常用的标准库using namespace 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;    } else if (c13 == minc) {        // 差值相等,选择较矮的那个        if (h3 < ans) {            ans = h3;        }    }    // 处理 h4:与当前最小差值比较    if (c14 < minc) {        minc = c14;          // 差值更小,更新        ans = h4;    } else if (c14 == minc) {        // 差值相等,选较矮的        if (h4 < ans) {            ans = h4;        }    }    // 输出最终答案    cout << ans << endl;    return 0;}

思路分析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>using namespace std;int h[5]; // 用于存储四个小朋友的身高,下标 1~4 使用intmain(){    // 输入四个身高    for (int i = 1; i <= 4; i++) {        cin >> h[i];    }    int minc = 100;          // 初始化最小差值,100 大于可能的最大差值 99    int 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];        } else if (c == minc && h[i] < ans) { // 差值相同且当前更矮            ans = h[i];        }    }    cout << ans;  // 输出最终选择的朋友身高    return 0;}

功能分析

  • 关键点
    :先比较绝对差,差值小的优先;差值相等时选更矮的。由于身高互异,不会出现差值相等且身高也相等的情况,因此逻辑无歧义。
  • 边界情况
    :身高范围 100~199,最大差为 99,初始 minc = 100 确保第一次比较一定会被更新。如果所有小朋友与 Alice 的差都大于 100,则可能出错,但此情况不存在(因为最大差为 99)。
  • 时间复杂度
    :仅遍历 3 个元素,常数时间,效率极高。
  • 空间复杂度
    :使用固定大小的数组,空间常数。

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>using namespace std;intmain(){	cout<<"##########  一站式掌握信奥赛知识!  ##########";	cout<<"#############  冲刺信奥赛拿奖!  #############";	cout<<"######  课程购买后永久学习,不受限制!   ######";return 0;}

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

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

https://edu.csdn.net/lecturer/7901

2026年3月GESP真题及题解(C++一级):交朋友-第10张图片-四季读书网

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/404372026年3月GESP真题及题解(C++一级):交朋友-第11张图片-四季读书网

3、csp信奥赛高频考点知识详解及案例实践:

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

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

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

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

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

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

5、GESP C++考级真题题解:

2026年3月GESP真题及题解(C++一级):交朋友-第12张图片-四季读书网

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

2026年3月GESP真题及题解(C++一级):交朋友-第13张图片-四季读书网

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

2026年3月GESP真题及题解(C++一级):交朋友-第14张图片-四季读书网 GESP(C++ 七级+八级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_13117178.html

·     文末祝福    ·

#include<bits/stdc++.h>using namespace std;intmain(){	cout<<"跟着王老师一起学习信奥赛C++";	cout<<"    成就更好的自己!       ";	cout<<"  csp信奥赛一等奖属于你!   ";return 0;}
2026年3月GESP真题及题解(C++一级):交朋友-第15张图片-四季读书网

抱歉,评论功能暂时关闭!