Online Compiler C

#include <stdio.h> int main() { int x, digit, counter=0; scanf("%d", &x); while (x >= 1) { digit = x % 10; if (digit == 9) { counter++; } x = x / 10; } if (counter == 1) { printf("YES\n"); } else { printf("NO\n"); } return 0; }
这段代码的功能是:读入一个整数,统计其中数字9出现的次数,如果恰好出现一次就输出YES,否则输出NO。

代码逻辑基本正确,但有一个边界情况需要注意。

- 当输入的数字是0时,while循环条件 `x >= 1` 不成立,循环不会执行,counter保持为0,最终输出NO。但0这个数字中并没有9,所以输出NO是正确的。不过,如果题目要求处理负数,你的代码没有考虑,因为负数也不满足 `x >= 1`。

- 主要问题在于循环条件 `x >= 1`。当x为0时,循环不执行,这没问题。但当x是负数时,循环也不执行,而负数中可能包含数字9(例如-9)。你需要考虑如何处理负数的情况。