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

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

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

所属知识点:枚举与数论 难度要求:掌握 考频:—

有关如下 C++ 代码描述,变量都是整型,错误的是(  )。
int n, limit, i;
cout << "请输入一个正整数: ";
cin >> n;
if (n <= 1)
    printf("%d非素数", n);
else if (n == 2)
    printf("2是素数");
else {
    limit = sqrt(n) + 1;
    for (i = 2; i < limit; i++)
        if (n % i == 0) {
            printf("%d非素数", n);
            break;
        }
    if (i >= limit)
        printf("%d是素数", n);
}

正确答案:D

题目解析
D 描述错误。若把 +1 改为更大的常数,limit 会随之增大;当 limit 超过 n 时,循环会取到 i=n,使 n % i == 0 成立,把本是素数的 n 误判为“非素数”,因此“执行结果不会有错误”不成立。A、B、C 的描述均正确(n=2 走 else 分支时 limit=int(sqrt(2))+1=2,循环不执行,i>=limit 成立仍输出“2是素数”,与保留 n==2 分支结果相同)。

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

进入 GESPPASS 开始练习