Онлайн компилятор C

#include <stdio.h> int main() { int a; int cnt=0; scanf("%d", &a); while (a > 0) { int d = a % 10; if (d == 9) cnt++; a = a / 10; } if (cnt ==1) printf("YES\n"); else printf("NO\n"); return 0; }
这段代码的功能是:读入一个整数,判断它是否恰好包含一个数字9。如果是,输出YES,否则输出NO。

代码逻辑是正确的,但有一个潜在问题:如果输入的数字是负数,while循环不会执行,cnt保持为0,程序会输出NO。这可能是符合预期的,但需要确认题目是否要求处理负数。

- 检查题目是否要求处理负数或零的情况。如果要求,当前代码对负数会直接输出NO,可能不符合预期。
- 如果题目要求判断数字中是否恰好有一个9,当前代码对0也会输出NO,因为0没有数字9。这可能是正确的,但需要确认。