Онлайн компилятор C

#include <stdio.h> int main() { int MAX,a,b,c; scanf("%d",&M); a = M / 100; b = (M % 100) / 10; c = M - a*100 - b*10; MAX=a; if(b>a) MAX=b; if(c>a); MAX=c; printf("%d",MAX); return 0; }
这段代码的目的是读取一个三位数,找出它的百位、十位和个位数字中的最大值并输出。代码中有一个变量命名不一致的问题,以及一个逻辑错误。

- 第4行声明了 `int MAX,a,b,c;`,但第5行 `scanf` 中使用了 `&M`,而 `M` 没有被声明。应该使用已声明的变量名,比如 `a` 或另一个变量,但这里意图是读取输入到某个变量中,然后分解它的各位数字。
- 第10行的 `if(c>a);` 后面多了一个分号,这会导致条件判断失效,无论条件是否成立,都会执行 `MAX=c;`。需要去掉这个分号。