在线编译器 C

#include <stdio.h> int main() {int n,a=2; if (n==2){ printf("YES"); } scanf("%d",&n); while (a<n){ if (n%a==0){ printf("NO"); return 0; } a++;} {printf("YES");} return 0; }
这段代码试图判断一个整数是否为质数,但存在逻辑顺序错误。程序先检查了未初始化的变量 `n`,然后才读取用户输入,导致判断结果与输入无关。

- 变量 `n` 在使用前未被赋值,`scanf` 读取输入应该放在 `if` 判断之前,否则 `n` 的值是未定义的。
- 当 `n` 等于 2 时,循环不会执行,但最后的 `printf("YES")` 会输出,这本身没问题。但需要注意,如果 `n` 小于 2,循环条件 `a < n` 不成立,也会输出 "YES",而实际上 1 和 0 不是质数。