在线编译器 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 (cnt== 1) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是:读入一个整数,判断它是否恰好包含一个数字9。如果是,输出YES,否则输出NO。

代码的逻辑基本正确,但有一个细节需要注意。

- 当输入的数字是负数时,while循环条件n > 0会直接不成立,导致cnt保持为0,程序会输出NO。但题目可能要求处理负数的情况,比如-9是否应该算作包含一个9?你需要确认题目对负数的要求。
- 另外,如果输入的数字是0,循环也不会执行,输出NO。但0本身不包含数字9,所以这个结果是对的。