Онлайн компилятор C

#include <stdio.h> int main() { int a, b; scanf("%d", &a); b = a / 100; if (b >= 1 && b <= 9) { printf("YES"); } else printf("NO"); return 0; }
这段代码的作用是:读入一个整数,然后判断它除以100后的整数部分是否在1到9之间(即判断这个数是否是三位数)。如果是,输出"YES",否则输出"NO"。

- 你的判断逻辑有误。`b = a / 100` 得到的是百位及以上的数字,但三位数的范围是100到999,此时 `a/100` 的结果是1到9,这确实能判断三位数。但你的代码没有考虑负数或0的情况,比如输入0时,`b`为0,输出"NO"是正确的,但输入-100时,`b`为-1,也会输出"NO",这没问题。主要问题是:你的判断条件 `b >= 1 && b <= 9` 实际上只适用于正数三位数,但题目可能要求判断任意整数是否为三位数?如果是,那么负数三位数(如-123)也应该输出"YES",但你的代码会输出"NO"。

- 另外,注意三位数包括100和999,你的条件 `b >= 1 && b <= 9` 对于100(b=1)和999(b=9)是正确的,但比如输入1000,b=10,输出"NO",正确。所以你的代码对于正数三位数判断是正确的,但需要确认题目是否要求处理负数。