下面的 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;正数时 abs(i) 等价于 i
关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。
考点:循环条件|abs 语义
记忆:本题 i 始终为正,abs(i) 与 i 等价 → 答案 A. 正确