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; }
这段代码的功能是:读入一个三位整数,分离出它的百位、十位和个位数字,然后输出这三个数字中的最大值。

代码中有一个逻辑错误:在比较最大值时,只将b与a比较、c与a比较,但没有考虑b和c之间的大小关系。例如,如果b是5,c是9,a是3,程序会先让MAX=b=5,然后检查c>a(9>3成立),于是MAX=c=9,结果正确。但如果b是9,c是5,a是3,程序会先让MAX=b=9,然后检查c>a(5>3成立),于是MAX=c=5,结果就错了,因为此时b才是最大值。

- 注意:你的比较逻辑需要确保每次更新MAX时,都是与当前MAX比较,而不是只与a比较。
- 思考一下:如何修改条件判断,使得每次比较都基于当前已经找到的最大值?