Online Compiler C

#include <stdio.h> int main() { int n; int count = 0; scanf("%d", &n); while (n > 0) { int d = n % 10; n = n / 10; if (d == 9) { count = count + 1; } } if (count > 1) printf("NO"); else if(count>0&&count!=1) printf("YES"); return 0; }
这段代码的功能是:读入一个整数,统计其中数字9出现的次数,然后根据次数输出结果。但目前的输出逻辑存在问题。

- 你的代码统计数字9出现次数的部分是正确的,使用循环逐位取模和整除来检查每一位。
- 输出部分的条件判断有逻辑错误。`else if(count>0&&count!=1)` 这个条件实际上等价于 `count > 1`,因为 `count>0` 且 `count!=1` 就是 `count>=2`。所以当 `count` 等于1时,没有任何输出。
- 你的条件分支没有覆盖所有情况,比如 `count` 等于0或等于1时,程序可能没有输出或输出错误。

提示:
- 重新思考题目要求:当数字9出现多少次时输出"YES",多少次时输出"NO"?你的条件应该覆盖所有可能的 `count` 值。
- 检查 `else if` 的条件是否真的表达了你的意图,特别是 `count>0&&count!=1` 这个组合。