在线编译器 C

#include <stdio.h> int main() { int n; int cnt=0; scanf("%d", &n); while (n > 0) { int d = n % 10; if (d == 9) cnt++; n=n/10; } if (d == 1) printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数中是否包含数字9,但存在逻辑错误。代码读取一个整数,然后通过循环统计数字9出现的次数,最后却用变量d(循环结束后的最后一位数字)来判断是否等于1,这显然不符合原意。

- 变量d只在while循环内部定义,循环结束后d不再有效,因此最后的if (d == 1)会编译错误或使用未定义的值。你需要重新思考判断条件应该基于什么。
- 你的代码统计了数字9出现的次数(cnt),但最后却用d来判断,这两者没有关联。你应该根据cnt的值来决定输出"YES"还是"NO",而不是使用d。