0

ユーザーが入力した 3 つの数値のうち、どれが最大かを判断するコードを書きました。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();
}

このエラーの原因は何ですか? 修正するにはどうすればよいですか?

4

8 に答える 8

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 に答える
1

ここで人々が言っ​​ていることは真実ですが、ベスト プラクティスとして、if のチェックを減らします。

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

「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)

すなわち

if(b>a && b>c)

する必要があります

else if(b>a && b>c)
于 2012-04-18T05:45:27.400 に答える
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 に答える
0

2 番目の if ステートメントは、else if である必要があります

于 2012-04-18T05:45:08.480 に答える