鱼C论坛

 找回密码
 立即注册
查看: 2691|回复: 14

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

[复制链接]
发表于 2013-11-30 22:03:04 | 显示全部楼层 |阅读模式
3鱼币
为啥得不到正确的结果,求大神相助!!!!!

#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);
}


最佳答案

查看完整内容

怎么好像漏了几个大括号导致整体判断结构有问题..... if(a>b){ if(b>c){ max=a;min=c;} if(a>c&&b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;}}

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

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

使用道具 举报

发表于 2013-11-30 22:27:17 | 显示全部楼层
兄弟  看了你的代码我凌乱了  if为毛不加{},if(a>b)不就没什么用么?
你说的错误是不是当a==b或者a==c或者b==c时min和max的值是负数?这是你程序的bug,因为你没有在它们相等时,让程序做任何事情。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
}
这是网上的源码我给你贴一下,看看是不是更简单清晰?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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去掉就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-1 14:11:55 | 显示全部楼层
#include <stdio.h>

int main()
{
        int a[3];
        scanf("%d %d %d",&a[0],&a[1],&a[2]);
        int i;
        int j;
        int t;
        for(i=0;i<3;i++){
                for(j=0;j<3;j++){
                        if(a[i]>a[i+1]){
                                t = a[i];
                                a[i]=a[i+1];
                                a[i+1]= t;
                        }
                }
        }
        printf("Min = %d,Max =%d\n",a[0],a[2]);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-1 19:19:09 | 显示全部楼层
这编码习惯。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-1 22:02:43 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-1 22:04:46 | 显示全部楼层
maomingkun 发表于 2013-11-30 22:27
兄弟  看了你的代码我凌乱了  if为毛不加{},if(a>b)不就没什么用么?
你说的错误是不是当a==b或者a==c或者 ...

不考虑相等问题,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-1 22:08:55 | 显示全部楼层
ssehx 发表于 2013-12-1 03:23
怎么好像漏了几个大括号导致整体判断结构有问题.....

         if(a>b){

对了,谢谢哈。为啥 max=a;min=c;中间用分号,逗号不行么?求解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-2 00:46:52 | 显示全部楼层
这个是编程语法规范的问题 具体的我这种民工也解释不清楚 就像min=c后面你为什么用的是分号而不是句号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
}
兄弟,看你代码我也凌乱了,不过我运行你的代码结果是对的,能出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-6 19:43:03 | 显示全部楼层
︶ㄣ痕迹の天涯 发表于 2013-12-1 22:08
对了,谢谢哈。为啥 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);


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

使用道具 举报

发表于 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;
这样行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-12 21:55:41 | 显示全部楼层
小雨哥 发表于 2013-12-11 13:10
这样行吗?

此问题早已解决,你这个似乎有点乱啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 02:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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