Online Compiler C

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

首先,代码在读取用户输入之前就使用了变量n,这会导致未定义行为。其次,判断数字9的逻辑只检查了一次个位数,而没有循环处理所有数位。另外,条件 `if(n<0)` 后面直接跟了 `scanf`,但花括号的位置也容易引起误解。

- 变量n在使用前没有初始化,也没有先读取输入。应该先调用scanf读取n的值,再进行后续判断。
- 判断数字中是否包含9,需要循环处理每一位数字,而不是只检查一次个位数。当前代码只检查了n的个位,然后除以10一次就结束了。