0

我写了一段代码,试图判断三个用户输入的数字中哪一个是最大的。但是,我无法理解为什么我的代码会中断 input3, 1, 2并适用于 input 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();
}

我在做什么导致这个错误,我能做些什么来解决它?

4

8 回答 8

1

你错过了“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",a);
    else if(b>a && b>c)
        printf("%d is greatest",b);
    else 
        printf("%d is greatest",c);
}
于 2012-04-18T05:44:03.710 回答
1

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

IE

if(b>a && b>c)

应该

else if(b>a && b>c)
于 2012-04-18T05:45:27.400 回答
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);
        }
    }
}
于 2012-04-18T05:58:49.407 回答
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);

}
于 2012-04-18T06:43:42.913 回答
0

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

于 2012-04-18T05:45:08.480 回答
0

只需在您的代码中添加一个简单的 else if 语句,它应该可以正常工作,如下所示:

主要的() {

    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();

}

于 2012-04-18T06:11:25.837 回答
0

你为什么不试试这个。它更整洁。您的代码的问题是您缺少一个可以与 if 一起放置的 else。

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();
}
于 2012-04-18T06:48:40.137 回答
0
#define MAX(a,b) (((a)>=(b))?(a):(b))
#define MAX3(a,b,c) MAX(MAX(a,b),c)
于 2012-04-20T22:56:51.353 回答