GESP C++ 真题 · 逐题精解
首页 › C++二级真题 › 2026年9月 › 第14题

GESP 2026年9月 C++二级 单选题 第14题

C++二级单选题2026年9月第14题

所属知识点:分支与循环结构 难度要求:掌握 考频:—

小北的身高是 1.65 米。班上有 n 个小朋友,小北想和身高最接近自己的人交朋友。如果有多个小朋友与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是(  )。
int n, i;
float target, h, best_height, min_diff, diff;

cout << "请输入小朋友的人数: ";
cin >> n;
target = 1.65;
best_height = 0.0;
min_diff = 100.0;

for (i = 0; i < n; i++) {
    cout << "请输入第 " << i << " 个小朋友的身高: ";
    cin >> h;
    diff = abs(h - target);

    if (____________________) { // L1
        min_diff = diff;
        best_height = h;
    }
}
cout << "小北的朋友身高为: " << best_height;

正确答案:A

题目解析
需要在“身高差更小”时更新最优;当身高差相同(diff == min_diff)时,选择身高较矮者,即 h < best_height 时才更新。A 用 diff < min_diff 覆盖更接近的情况,并用 (diff == min_diff && h < best_height) 处理并列时取较矮者,逻辑正确。B、C 用 && 会漏掉“仅差更小但更高”的正常更新;D 用 diff < min_diff || h < best_height 会在差更大但更矮时错误更新。故选 A。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习