鱼C论坛

 找回密码
 立即注册
查看: 496|回复: 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中也没必要交换。
有更简单的方法。
三目运算符  ? :

  1. #include <stdio.h>
  2. void main()
  3. {
  4.     int a, b, c, min,max;
  5.     printf("input 3 integer:");
  6.     scanf("%d%d%d", &a, &b, &c);
  7.     max=(c>b&&c>a)?c:(a>b)?a:b;
  8.     min=(c<a&&c<b)?c:(a<b)?a:b;
  9.     printf("min=%d,max=%d\n", min, max);
  10. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-29 15:17:10 | 显示全部楼层
最后一个为什么不交换啊?
最后一个if条件后多了一个分号
  1. #include <stdio.h>
  2. void main()
  3. {
  4.     int a, b, c, me;
  5.     printf("input 3 integer:");
  6.     scanf("%d%d%d", &a, &b, &c);
  7.     if (a>b)
  8.     {
  9.         me = a;
  10.         a = b;
  11.         b = me;
  12.     }
  13.     if (a>c)
  14.     {
  15.         me = a;
  16.         a = c;
  17.         c = me;
  18.     }
  19.     if (b>c)
  20.     {
  21.         me = b;
  22.         b = c;
  23.         c = me;
  24.     }
  25.     printf("min=%d,max=%d\n", a, c);

  26. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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中也没必要交换。
有更简单的方法。
三目运算符  ? :

  1. #include <stdio.h>
  2. void main()
  3. {
  4.     int a, b, c, min,max;
  5.     printf("input 3 integer:");
  6.     scanf("%d%d%d", &a, &b, &c);
  7.     max=(c>b&&c>a)?c:(a>b)?a:b;
  8.     min=(c<a&&c<b)?c:(a<b)?a:b;
  9.     printf("min=%d,max=%d\n", min, max);
  10. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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, 2024-4-28 05:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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