在线编译器 C

#include <stdio.h> int main() { int n; int count = 0; scanf("%d", &n); while (n > 10) { int d = n % 10; n = n / 10; if (d == 9) { count = count +1; } } if (count > 1) printf("NO"); else printf("YES"); if(n==9)printf("YES") }
这段代码的目的是判断一个整数中是否包含超过一个数字9。但代码有几个问题。

首先,循环条件 `while (n > 10)` 会导致当 n 等于 10 或小于 10 时,循环不执行,这样会漏掉对个位数字的判断。例如输入 19,循环不会执行,但个位是9,程序会错误输出。

其次,最后一行 `if(n==9)printf("YES")` 缺少分号,会导致编译错误。

- 循环条件应该检查到 n 变为 0 为止,而不是 n > 10。这样才能处理所有数位,包括个位。
- 最后一行缺少分号,需要补上。同时思考一下,这个单独的 if 判断是否与前面的逻辑重复或冲突。