Online Compiler C

#include<stdio.h> int main() { int n,count=0; scanf("%d",&n); if(n<0) n=-n; whlie(n>0); if(n%10==9) { count++; n=n/10; } if(count==1) { printf("YES"); } else{ printf("NO"); } return 0; }
这段代码的目的是判断一个整数中是否恰好包含一个数字9。但代码中存在几个问题,导致它无法正确运行。

- 第8行 `whlie` 是拼写错误,应该是 `while`。而且后面多了一个分号,导致循环体为空,程序会陷入死循环。
- 循环结构不正确:`if(n%10==9)` 和 `n=n/10` 应该放在循环内部,但当前它们写在循环外面,所以循环只执行空语句,不会处理数字的每一位。
- 循环条件 `n>0` 是正确的,但因为没有循环体,程序无法逐位检查数字。

- 提示1:检查 `while` 的拼写和后面的分号。循环语句后面不应该有分号,否则循环体为空。
- 提示2:思考如何让循环逐位处理数字的每一位。你需要把检查数字和除以10的操作放在循环内部的花括号里。