GESP 二级 · GESP 202303 C++ 二级 第 15 题

选择题 · 答案 C · 考点:循环控制

← 整套速查表 GESP 二级 全部真题

题目

执行以下 C++ 语言程序后,输出结果是( )。

#include <iostream>
using namespace std;
int main() {
    int n = 17;
    bool isprime = true;
    for (int i = 2; i <= n; i++)
        if (n % i == 0)
            isprime = false;
    cout << isprime << endl;
    return 0;
}
答案:C

考点

循环控制

解题思维

这题表面考质数判断,实则考循环边界与布尔输出机制。拿到题先看n=17,循环条件i<=n会让i走到17,此时17%17==0必然触发,isprime被覆写为false。最后cout输出bool时,C++默认转为整数0,所以选C。

常见错误

最容易掉进'17是质数'的直觉坑,直接选true或1;其次会混淆cout对bool的输出规则,以为输出字符串'false';还有少数人会纠结循环该写到i<n还是i<=n,没意识到题目故意写成i<=n就是为了在自身位置截断。这些坑都源于对C++布尔输出机制和循环边界细节的忽视。

详细解析(节选)

【考点】循环控制|布尔类型输出|质数判断逻辑

1. 考纲定位

GESP二级'算法基础'模块,重点考察循环边界对逻辑判断的影响,以及C++布尔类型在输出时的默认转换规则。命题人卡住的是考生对'cout << bool'行为的盲区——绝大多数人认为输出的是'true'或'false'字符串,却不知C++默认将bool转为整数输出(0/1)。这道题把这两个坑叠在一起:循环条件写成i<=n,让17被自身整除,isprime被覆写为false,最后cout输出0。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断