︶ㄣ痕迹の天涯 发表于 2013-11-30 22:03:04

三个数比较大小输出max,min问题,大神们速来,谢谢

为啥得不到正确的结果,求大神相助!!!!!

#include <stdio.h>
void main()
{
        int a,b,c,max,min;
        printf("please input three numbers:");
        scanf("%d%d%d",&a,&b,&c);
        if(a>b)
        if(b>c)
                   max=a,min=c;
          if(a>c&&b<c)
                   max=a,min=b;
      if(a<c)
                   max=c,min=b;
        if(a<b)
        if(a>c)
                        max=b,min=c;
      if(b>c&&a<c)
                        max=b,min=a;
      if(b<c)
                  max=c,min=a;
printf("max = %d\nmin = %d\n",max,min);
}


ssehx 发表于 2013-11-30 22:03:05

本帖最后由 ssehx 于 2013-12-1 03:50 编辑

怎么好像漏了几个大括号导致整体判断结构有问题.....

         if(a>b){
         if(b>c){
                  max=a;min=c;}
             if(a>c&&b<c){
                  max=a;min=b;}
         if(a<c){
                  max=c;min=b;}}
         if(a<b){
         if(a>c){
                         max=b;min=c;}
         if(b>c&&a<c){
                         max=b;min=a;}
         if(b<c){
                     max=c;min=a;}}

你可以试一下 我估计这样改应该跟你想的结果差不多 这段代码也没有考虑两个数相等的情况
我还有个疑问 你贴上来的这段代码编译能通过吗?

maomingkun 发表于 2013-11-30 22:27:17

兄弟看了你的代码我凌乱了if为毛不加{},if(a>b)不就没什么用么?
你说的错误是不是当a==b或者a==c或者b==c时min和max的值是负数?这是你程序的bug,因为你没有在它们相等时,让程序做任何事情。

maomingkun 发表于 2013-11-30 23:04:34

#include <stdio.h>
void main()
{
      int a,b,c,max,min;
      printf("please input three numbers:");
      scanf("%d%d%d",&a,&b,&c);
      min = a;
                max = a;
               
                if(min >b)
                {
                        min = b;
                }
               
                if(min>c)
                {
                        min = c;
                }
               
                if(max < b)
                {
                        max = b;
                }
               
                if(max < c)
                {
                        max = c;
                }
               
                printf("max = %d\nmin = %d\n",max,min);
}
这是网上的源码我给你贴一下,看看是不是更简单清晰?

BIT编程小菜鸟 发表于 2013-12-1 11:14:03

#include <stdio.h>
main()
{
      int a,b,c,max,min;
      printf("please input three numbers:");
      scanf("%d%d%d",&a,&b,&c);
      if(a>b)
      if(b>c)
                   max=a,min=c;
            if(a>c&&b<c)
                   max=a,min=b;
      if(a<c)
                   max=c,min=b;
      if(a<b)
      if(a>c)
                        max=b,min=c;
      if(b>c&&a<c)
                        max=b,min=a;
      if(b<c)
                  max=c,min=a;
printf("max = %d\nmin = %d\n",max,min);
}
其实很简单,你把第二行的void去掉就可以了

惊鸿夹雪 发表于 2013-12-1 14:11:55

#include <stdio.h>

int main()
{
        int a;
        scanf("%d %d %d",&a,&a,&a);
        int i;
        int j;
        int t;
        for(i=0;i<3;i++){
                for(j=0;j<3;j++){
                        if(a>a){
                                t = a;
                                a=a;
                                a= t;
                        }
                }
        }
        printf("Min = %d,Max =%d\n",a,a);
        return 0;
}

卧室不要床 发表于 2013-12-1 19:19:09

这编码习惯。。。

︶ㄣ痕迹の天涯 发表于 2013-12-1 22:02:43

ssehx 发表于 2013-12-1 03:23 static/image/common/back.gif
怎么好像漏了几个大括号导致整体判断结构有问题.....

         if(a>b){


通过啦,0错误0警告,谢谢围观

︶ㄣ痕迹の天涯 发表于 2013-12-1 22:04:46

maomingkun 发表于 2013-11-30 22:27 static/image/common/back.gif
兄弟看了你的代码我凌乱了if为毛不加{},if(a>b)不就没什么用么?
你说的错误是不是当a==b或者a==c或者 ...

不考虑相等问题,

︶ㄣ痕迹の天涯 发表于 2013-12-1 22:08:55

ssehx 发表于 2013-12-1 03:23 static/image/common/back.gif
怎么好像漏了几个大括号导致整体判断结构有问题.....

         if(a>b){


对了,谢谢哈。为啥 max=a;min=c;中间用分号,逗号不行么?求解答

ssehx 发表于 2013-12-2 00:46:52

这个是编程语法规范的问题 具体的我这种民工也解释不清楚 就像min=c后面你为什么用的是分号而不是句号

18326638710 发表于 2013-12-2 10:53:01

#include <stdio.h>

void main()
{
    int x, y, z;
        void max(int a, int b, int c);
        scanf("%d %d %d", &x, &y, &z);   
        max(x,y,z);
}

void max(int a, int b, int c)
{
    int max, min,temp;
        if ( a<b )
        {
           temp = b;
           b = a;
           a = temp;
        }
        if ( a<c )
        {
           temp = c;
           c = a;
           a = temp;
        }
        if ( b<c )
        {
           temp = c;
           c = b;
           b = temp;
        }
        printf("max=%d, min=%d\n", a, c);
}兄弟,看你代码我也凌乱了,不过我运行你的代码结果是对的,能出来。

maomingkun 发表于 2013-12-6 19:43:03

︶ㄣ痕迹の天涯 发表于 2013-12-1 22:08 static/image/common/back.gif
对了,谢谢哈。为啥 max=a;min=c;中间用分号,逗号不行么?求解答

再给你个简单的代码:
#include <stdio.h>

void main()
{
        int a,b,c,max,min;
        scanf("%d%d%d",&a,&b,&c);
       
        max=a>b?a:b;
        if (max<c)
        {
                max=c;
        }
        min=a<b?a:b;
        if (min>c)
        {
                min=c;
        }
        printf("max=%d\nmin=%d\n",max,min);


}

小雨哥 发表于 2013-12-11 13:10:32

        max = a>b && a>c ? a : b > c ? b: c;
        min = a<b && a<c ? a : b < c ? b :c;这样行吗?

︶ㄣ痕迹の天涯 发表于 2013-12-12 21:55:41

小雨哥 发表于 2013-12-11 13:10 static/image/common/back.gif
这样行吗?

此问题早已解决,你这个似乎有点乱啊
页: [1]
查看完整版本: 三个数比较大小输出max,min问题,大神们速来,谢谢