Online Compiler C

#include <stdio.h> int main() { int n, m = 0; scanf("%d", &n); while (n != 0) { n = n / 10; m++; } if (m == 3) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是:读取一个整数,然后通过不断除以10来统计它的位数,最后判断位数是否等于3,输出YES或NO。

- 代码中变量m用来统计位数,但初始化为0。当n为0时,循环不会执行,m保持0,此时会输出NO。但0本身是一位数,所以对于输入0的情况,程序会错误地认为它不是三位数。
- 另外,如果输入的是负数,比如-123,循环中n不断除以10最终会变成0,但负号不会被计入位数,所以-123会被判断为三位数,但实际上它包含负号,严格来说不是三位正整数。