Online Compiler C

#include <stdio.h> int main() { int M,a,b,c,MAX; 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; }
这段代码的目的是:读入一个三位整数M,分离出它的百位a、十位b、个位c,然后找出这三个数字中的最大值并输出。

代码中存在一个逻辑错误。在比较c和MAX时,你写的是 `if(c>a);` 后面多了一个分号,这导致条件判断失效,无论c是否大于a,都会执行 `MAX=c;`。另外,比较逻辑也不完整,应该用当前最大值MAX去比较,而不是固定用a。

- 检查 `if(c>a);` 这一行,分号的位置不对,它让条件判断和赋值语句分离了。
- 比较b和c时,应该用当前存储最大值的变量MAX,而不是直接用a。