Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int n = 0; while (a != 0) { int x = 9; if (x == a % 10) { n++; } a / 10; } if (n == 1) printf("YES"); else printf("NO"); return 0; }
这段代码的目的是判断输入的整数中是否恰好包含一个数字9。但代码中存在逻辑错误,导致无法正确工作。

主要问题在于循环内部没有更新变量a的值,导致无限循环。另外,变量x被固定为9,但每次循环都重新赋值,虽然不影响结果,但显得多余。

- 检查循环体中的 `a / 10;` 这一行,它计算了a除以10的结果,但没有将结果赋值给任何变量,因此a的值永远不会改变,循环会一直执行。
- 思考如何正确地更新a的值,使得每次循环都能去掉最后一位数字,从而逐位检查所有数字。