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

#include <stdio.h> int main() { int n; int cnt=0; scanf("%d", &n); int arr[10] = {0}; int d = 0; 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来决定输出YES或NO。

- 变量d在循环内部被重新声明,导致循环外部的d始终是初始值0,因此条件d == 1永远不会成立,程序总是输出NO。
- 代码中声明了数组arr[10]但从未使用,可以移除。
- 循环结束后,变量d的值是最后一位数字(因为循环中每次更新d),而不是数字9的个数。你需要明确判断条件:是检查数字中是否包含9,还是统计9出现的次数?根据输出YES/NO的意图,可能只需要检查是否存在数字9。