在线编译器 C

#include <stdio.h> int main() { int MAX,a,b,c; scanf("%d",&MX); a = MAX / 100; b = (MAX % 100) / 10; c = MAX - a*100 - b*10; MAX=a; if(b>a) MAX=b; if(c>a); MAX=c; printf("%d",MAX); return 0; }
这段代码的目的是从用户输入的一个三位数中,找出各位数字中的最大值并输出。但代码中存在几个问题。

- 变量名不一致:你声明了 `MAX` 和 `a,b,c`,但 `scanf` 中写的是 `&MX`,这会导致输入无法正确存储到 `MAX` 中。
- 逻辑错误:在比较 `c` 和 `a` 时,`if(c>a);` 后面多了一个分号,导致 `MAX=c;` 总是执行,而不是只在条件成立时执行。
- 变量命名:`MAX` 作为变量名容易与宏定义混淆,建议使用小写或更清晰的名称。

- 检查 `scanf` 中的变量名是否与声明的一致。
- 注意 `if` 语句后面不要加分号,否则条件判断会失效。