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++; } n/10; } if(n==1)printf("YES"); else printf("NO"); return 0; }
这段代码的目的是判断输入整数中是否恰好包含一个数字9。但代码存在逻辑错误,无法正确运行。

- 变量 `a` 的声明中多了一个逗号,这是语法错误。
- 循环中 `x` 每次都被赋值为9,但 `x` 的值从未改变,导致判断条件 `x==a%10` 只在最后一位数字是9时成立一次。
- 循环内 `n/10;` 这一行没有实际作用,它没有改变任何变量的值。
- 循环没有更新 `a` 的值,因此会陷入死循环(除非输入为0)。

- 提示1:循环中需要每次去掉 `a` 的最后一位数字,例如用 `a = a / 10;`,否则循环无法结束。
- 提示2:变量 `x` 是固定的9,但你应该直接比较 `a%10` 是否等于9,不需要额外变量。另外,`n` 的计数逻辑需要确保只统计数字9出现的次数。