鱼C论坛

 找回密码
 立即注册
查看: 1140|回复: 2

为什么错了

[复制链接]
发表于 2023-10-25 20:24:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int a, b, c;
        scanf("%d %d %d",&a,&b,&c);
        int max,min,med;
        max = (a > b) ? a : b;
        med = (a > b) ? b : a;
        if (max > c && med >c)
        max = max;
        med = med;
        min = c;
        else if (max > c && med < c)
        max = max;
        min = med;
        med = c;
        else if (max < c && med <c)
        med = max;
        min = med;
        max = c;
        printf("%d%d%d",min,med,max);
        return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-25 20:25:01 | 显示全部楼层
问题出在代码的if-else语句块中。在C语言中,每个if语句只能对应一个else语句,而你的代码中却有多个else if语句。

正确的写法应该是使用嵌套的if-else语句来实现多个条件的判断。以下是修正后的代码:
#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    int max, min, med;
    max = (a > b) ? a : b;
    med = (a > b) ? b : a;
    if (max > c && med > c) {
        min = c;
    } else if (max > c && med < c) {
        min = med;
        med = c;
    } else if (max < c && med < c) {
        med = max;
        min = med;
        max = c;
    }
    printf("%d%d%d", min, med, max);
    return 0;
}

修正后的代码中,使用了嵌套的if-else语句来根据不同的条件进行判断,并正确地更新了变量的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
这个修改后的代码可以正确地找出三个数中的最大值、最小值和中间值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 17:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表