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

#include <stdio.h> int main() { int max,a,b,c; scanf("%d %d %d",&a,&b,&c); max=a; if(b>a){ max=b; }if(c>b){ max=c } return 0; }
这段代码的目的是从三个整数中找出最大值,但存在几个问题。代码读取了三个数,将a设为初始最大值,然后尝试通过比较更新最大值,但逻辑不完整,并且最后没有输出结果。

- 第9行缺少分号,导致编译错误。C语言中每条语句末尾都需要分号。
- 比较逻辑有缺陷:如果c大于a但小于b,程序不会正确更新最大值。例如输入5 10 7,b>a成立,max变成10,但c>b不成立,max保持10,这是正确的。但如果输入5 7 10,b>a成立,max变成7,然后c>b成立,max变成10,也正确。但如果输入10 5 7,b>a不成立,max保持10,然后c>b成立,max变成7,这就不对了,因为实际最大值是10。问题在于第二个if没有考虑max的当前值,而是直接与b比较。应该让每次比较都基于当前的max值。
- 程序没有输出结果。读取并计算最大值后,需要用printf输出max的值。