在线编译器 C

#include <stdio.h> int main() { int n, m = 1; scanf("%d", &n); while (n != 0) { n = n / 10; m++; } if (m == 3) printf("YES"); else printf("NO"); return 0; }
这段代码的目的是判断输入的整数是否是三位数。它通过不断除以10来统计数字的位数,最后检查位数是否等于3。

- 变量m初始值为1,但循环中每次除以10后m增加1,这会导致统计结果比实际位数多1。例如输入123,循环后m=4,但实际是三位数。
- 循环条件`n != 0`在n为0时退出,但输入0本身是特殊情况,此时m=1,程序会输出NO,但0其实是一位数。