【GESP】C++一级真题 luogu-B4495, [GESP202603 一级] 交朋友
GESP一级基本语句和逻辑练习,难度★☆☆☆☆。
B4495 [GESP202603 一级] 交朋友
题目要求
题目描述
Alice 班上共有 4 个小朋友,身高分别为 $H_1$, $H_2$, $H_3$, $H_4$,其中 Alice 的身高为 $H_1$。Alice 想要和身高最接近她的人交朋友,如果有多个人符合条件,则 Alice 想和其中较矮的那一人做朋友,你能告诉她这个人的身高是多少吗?
输入格式
输入共 4 行,第 $i$ 行包含一个整数 $H_i$,表示班上小朋友的身高。
输出格式
输出 1 行,包含一个整数 $h$,表示 Alice 想交的朋友的身高。
输入输出样例 #1
输入 #1
1
2
3
4
150
165
135
133
输出 #1
1
135
说明/提示
样例解释
样例 1 中,Alice 身高为 $150$,第 2、3 个小朋友与 Alice 身高差距为 $15$,同样最接近,Alice 选较矮的一个即第 $3$ 个身高为 $135$ 的小朋友交朋友。
数据范围
保证 $100 \le H_i \le 199$ 且 $H_i$ 互不相同。
题目分析
这道题考察的是基础的条件判断。题目的核心需求可以拆解为两个部分:
- 寻找身高差距最小的同学: 我们需要计算其他三位同学的身高($H_2, H_3, H_4$)与 Alice 身高($H_1$)的差值的绝对值,然后比较谁的差值最小。
- 处理差值相同的情况: 当有几个同学与 Alice 身高的差距一样大时(例如:一个比 Alice 高 15 厘米,另一个比 Alice 矮 15 厘米),按照题目要求,选择身高较矮的那一位。
基于以上分析,我们可以有不同的代码实现方式。根据 GESP 一级的考试要求,我们将使用最基础的条件分支(if...else)与循环来解决。
示例代码
对于 GESP 一级的考生,我们可以使用基础的循环语句,并在循环内部重复执行“输入同学的身高,计算差值并更新目前找到的最优选项”这样一个过程。计算差值绝对值的时候可以利用 if...else 判断。如果新输入的同学与 Alice 差值更小,我们就更新“最优朋友”的身高;如果新同学的差值与之前的最小差值相等,我们就继续判断这个新同学是否比之前的那位更矮,如果更矮,则也更新我们的选择。也可以不用循环,直接定义多个变量,使用多重条件判断进行处理。
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
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
int main() {
// 存储 Alice 的身高
int h1;
std::cin >> h1;
// 记录目前发现的最小身高差距,初始值设为一个足够大的数
int min_diff = 1000;
// 记录目前最符合条件的同学的身高
int best_h = 0;
// 循环 3 次,处理剩下的 3 个同学
for (int i = 0; i < 3; i++) {
int h;
std::cin >> h;
// 计算当前输入的同学身高 h 与 Alice 身高 h1 的差值的绝对值
int diff;
if (h > h1) {
diff = h - h1;
} else {
diff = h1 - h;
}
// 如果发现更小的身高差,直接记录
if (diff < min_diff) {
min_diff = diff; // 更新最小差距记录
best_h = h; // 暂时敲定找这个同学交朋友
}
// 如果身高差和目前记录的最小身高差一样大,那么选择较矮的那一个
else if (diff == min_diff) {
if (h < best_h) {
best_h = h; // 发现了同样身高差,但身高更矮的同学
}
}
}
// 输出最终确定的人当朋友
std::cout << best_h << std::endl;
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP 学习专题站:GESP WIKI
“luogu-”系列题目可在洛谷题库进行在线评测。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
欢迎加入:Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答
欢迎加入:C++ GESP/CSP认证学习QQ频道,考试资源总结汇总
欢迎加入:C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助
