|
发表于 2023-10-26 10:05:08
|
显示全部楼层
看起来你的代码意图是找出三个数中的最大值、最小值和中间值,但是代码存在一些逻辑错误。
首先,你在if-else语句中没有正确地比较a、b和c的值,导致最大值、最小值和中间值的赋值出现错误。
其次,你的代码没有处理所有可能的情况,例如当c是最大值时的情况。
最后,你的代码在最后的printf语句中打印了最小值、中间值和最大值,但是它们被打印成了三个数字,应该用空格或者其它分隔符隔开。
以下是修改后的代码:
- #include<stdio.h>
- int main()
- {
- int a, b, c;
- scanf("%d %d %d",&a,&b,&c);
- int max,min,med;
- // 比较a、b的大小,找出最大值
- max = (a > b) ? a : b;
- // 比较a、b的大小,找出最小值
- min = (a < b) ? a : b;
- // 如果c既不是最大值也不是最小值,那么它就是中间值
- if (c <= max && c >= min) {
- med = c;
- } else { // 如果c是最大值或者最小值,那么中间值就是a或b中不是最大值也不是最小值的数
- med = (max == a) ? b : a;
- }
- printf("%d %d %d",min,med,max); // 打印最小值、中间值和最大值,用空格隔开
- return 0;
- }
复制代码
这个修改后的代码可以正确地找出三个数中的最大值、最小值和中间值。 |
|