3个数字代码中最大的一个让我困惑

时间:2012-04-18 05:38:13

标签: c algorithm if-statement numbers

我写了一段代码,试图告诉三个用户输入的数字中哪一个是最大的。但是,我无法理解为什么我的代码会针对输入3, 1, 2而中断,并且适用于输入55, 54, 56

我的代码:

main()
{
    int a,b,c;
    printf("enter three numbers");
    scanf("%d %d %d",&a,&b,&c);
    if(a>b && a>c)
        printf("%d is greatest",a);
    if(b>a && b>c)
        printf("%d is greatest",b);
    else printf("%d is greatest",c);
    getch();
}

我在做什么导致此错误,我该怎么做才能修复它?

8 个答案:

答案 0 :(得分:2)

你错过了“其他如果”,这是肯定的。

main()
{
    int a,b,c;
    printf("enter three numbers: ");
    scanf("%d %d %d",&a,&b,&c);

    if(a>b && a>c)
        printf("%d is greatest",a);
    else if(b>a && b>c)
        printf("%d is greatest",b);
    else 
        printf("%d is greatest",c);
}

答案 1 :(得分:1)

您需要在第else行之前添加if(b>a && b>c)

即。

if(b>a && b>c)

应该是

else if(b>a && b>c)

答案 2 :(得分:1)

人们在这里说的是真的,但为了最佳实践,我会减少ifs中的检查:

main()
{
    int a,b,c;
    printf("enter three numbers: ");
    scanf("%d %d %d",&a,&b,&c);

    if(a>=b) //it's not b.
    {
        if(a>=c)
        {
            printf("%d is greatest",a);
        }
        else
        {
            printf("%d is greatest",c);
        }
    }
    else // here you know that b > a, then it's not a.
    {
        if(b>=c)
        {
            printf("%d is greatest",b);
        }
        else
        {
            printf("%d is greatest",c);
        }
    }
}

答案 3 :(得分:1)

试试这个

<强>条件? exp1:exp2;

评估为

如果条件为真,则返回 exp1 否则返回 exp2

int main(){

    int a,b,c;
    printf("enter three numbers");
    scanf("%d %d %d",&a,&b,&c);

    int d = (a >= b)? a: b;
    d = (d >= c)? d: c;

    printf("%d is greatest", d);

}

答案 4 :(得分:0)

如果

,你的第二个if语句应该是

答案 5 :(得分:0)

只需在代码中添加一个简单的else if语句,它就可以正常工作:

main()的 {

    int a,b,c;

    printf("enter three numbers");

    scanf("%d %d %d",&a,&b,&c);

    if(a>b && a>c)

    printf("%d is greatest\n",a);

    else if(b>a && b>c)

    printf("%d is greatest\n",b);

    else printf("%d is greatest\n",c);

    //getch();

}

答案 6 :(得分:0)

你为什么不尝试这个。整洁。你的代码的问题在于你错过了一个可以与if一起使用的其他内容。

main() {

    int a,b,c;

    printf("enter three numbers");

    scanf("%d %d %d",&a,&b,&c);

    if(a>b && a>c)

       printf("%d is greatest\n",a);

    else if(b>c)

      printf("%d is greatest\n",b);

    else printf("%d is greatest\n",c);

    //getch();
}

答案 7 :(得分:0)

#define MAX(a,b) (((a)>=(b))?(a):(b))
#define MAX3(a,b,c) MAX(MAX(a,b),c)