鱼C论坛

 找回密码
 立即注册
查看: 719|回复: 5

[已解决]新手学习C语言,逻辑出错自己检查不出,求指教

[复制链接]
发表于 2020-4-29 15:10:34 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

void main()
{
        int a, b, c, me;
        printf("input 3 integer:");
        scanf("%d%d%d", &a, &b, &c);
        if (a>b)
        {
                me = a;
                a = b;
                b = me;
        }
        if (a>c)
        {
                me = a;
                a = c;
                c = me;
        }
        if (b>c);
        {
                c = b;
        }
        printf("min=%d,max=%d\n", a, c);


}




题目是输入3个整数  输出最大的数和最小的数,  为什么运行以后输出 456 的结果是min=4  max=5;  请问哪里有逻辑错误?
最佳答案
2020-4-29 15:31:44
646134029 发表于 2020-4-29 15:20
非常感谢,  你说的这种赋值方法我是知道的  但是我只需要输出最大和最小所以不用交换, 结果就是一个分 ...

只是找最大最小值啊。那前两个if中也没必要交换。
有更简单的方法。
三目运算符  ? :
#include <stdio.h>
void main()
{
    int a, b, c, min,max;
    printf("input 3 integer:");
    scanf("%d%d%d", &a, &b, &c);
    max=(c>b&&c>a)?c:(a>b)?a:b;
    min=(c<a&&c<b)?c:(a<b)?a:b;
    printf("min=%d,max=%d\n", min, max);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-29 15:17:10 | 显示全部楼层
最后一个为什么不交换啊?
最后一个if条件后多了一个分号
#include <stdio.h>
void main()
{
    int a, b, c, me;
    printf("input 3 integer:");
    scanf("%d%d%d", &a, &b, &c);
    if (a>b)
    {
        me = a;
        a = b;
        b = me;
    }
    if (a>c)
    {
        me = a;
        a = c;
        c = me;
    }
    if (b>c)
    {
        me = b;
        b = c;
        c = me;
    }
    printf("min=%d,max=%d\n", a, c);

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

使用道具 举报

 楼主| 发表于 2020-4-29 15:20:02 | 显示全部楼层
sunrise085 发表于 2020-4-29 15:17
最后一个为什么不交换啊?
最后一个if条件后多了一个分号

非常感谢,  你说的这种赋值方法我是知道的  但是我只需要输出最大和最小所以不用交换, 结果就是一个分号的问题,搞得我怀疑自己逻辑出错检查好久~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 15:31:44 | 显示全部楼层    本楼为最佳答案   
646134029 发表于 2020-4-29 15:20
非常感谢,  你说的这种赋值方法我是知道的  但是我只需要输出最大和最小所以不用交换, 结果就是一个分 ...

只是找最大最小值啊。那前两个if中也没必要交换。
有更简单的方法。
三目运算符  ? :
#include <stdio.h>
void main()
{
    int a, b, c, min,max;
    printf("input 3 integer:");
    scanf("%d%d%d", &a, &b, &c);
    max=(c>b&&c>a)?c:(a>b)?a:b;
    min=(c<a&&c<b)?c:(a<b)?a:b;
    printf("min=%d,max=%d\n", min, max);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 15:40:42 | 显示全部楼层
sunrise085 发表于 2020-4-29 15:31
只是找最大最小值啊。那前两个if中也没必要交换。
有更简单的方法。
三目运算符  ? :

这样写确实很简单哦,我刚开始没想到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 15:45:28 | 显示全部楼层
646134029 发表于 2020-4-29 15:40
这样写确实很简单哦,我刚开始没想到

那就给个最佳呗~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 17:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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