GESP 二级 · GESP 202603 C++ 二级 第 22 题

判断题 · 答案 A · 考点:循环控制、位运算

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

题目

下面的 C++ 代码段用于计算 1 到 N 之间且包含 N 的所有数字中含有的 3 的个数,如 1 到 40 含有 14 个 3,而 1 到 20 则只含有 2 个 3。如果将 while (i != 0) 改为 while (abs(i)),则执行结果相同。( )

cout << "请输入正整数N:";
cin >> N;
cnt = 0; // 保存3的个数
for (k = 1; k < N + 1; k++) {
    i = k;
    while (i != 0) {
        if (i % 10 == 3)
            cnt += 1;
        i /= 10;
    }
}
cout << cnt;
答案:A

考点

循环控制位运算 讲解 →位运算 真题汇总 →

解题思维

正数时 abs(i) 等价于 i

常见错误

关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。

详细解析(节选)

考点:循环条件|abs 语义
记忆:本题 i 始终为正,abs(i) 与 i 等价 → 答案 A. 正确

同考点真题

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