0

x先生から与えられた課題は、2 つの整数とy1 つの文字を求めるプログラムを作成することでしたz。に入力された文字はza2 つの整数sを加算、減算、m乗算、d除算します。

教師はクラスで複数の「if」「else」ステートメントを説明しようとしました。ただし、「{」が欠落している場所の頭または尾を作成することはできません。これをよりよく理解している人が、欠落している「{」の理由と場所を説明できれば、それは大歓迎です。

#include <stdio.h>

int main(void)
{
char let;
int x;
int y;
int a;
int s;
int m;
int d;

printf("Enter command letter \n");
scanf("%c", &let);

printf("Enter both integers \n");
scanf("%d%d%c", &x, &y);

if (let==a)
{
    a=x+y;
    printf("x+y is %d \n", a);
}

else
{
    if (let==s)
    {
            s=x-y;
            printf("x-y is %d \n", s);
    }

    else
    {
             if (let==m)
            {
                    m=x*y;
                    printf("x*y is %d \n", m);
            }

    else
    {
                    d=x/y;
                    printf("x/y is %d \n", d);
    }
}

return(0);

}
4

3 に答える 3

4

これは典型的なインデントの問題です。

確かなことの 1 つは、同じ IF に対して 2 つの 'else' を使用できないことです。コードに従うと、次のように表示されます。

    if (let==s)
    {
            s=x-y;
            printf("x-y is %d \n", s);
    }

    else
    {
             if (let==m)
            {
                    m=x*y;
                    printf("x*y is %d \n", m);
            }

    else
    {
                    d=x/y;
                    printf("x/y is %d \n", d);
    }

これは間違っています。

さて修正版

    if (let==s)
    {
            s=x-y;
            printf("x-y is %d \n", s);
    }

    else
    {
             if (let==m)
            {
                    m=x*y;
                    printf("x*y is %d \n", m);
            }

            else //REINDENTED THIS ELSE, AND THE ERROR BECOMES VISIBLE
            {
                    d=x/y;
                    printf("x/y is %d \n", d);
            }

     }//THIS IS THE ONE MISSING
于 2012-06-08T23:02:05.860 に答える
1

2 つの} else {ブロックがあります。

every が実行されない場合にのみ実行されるブロックが1 つ だけ必要です 。} else {if (...) {} else if (...) {

例えば:

int x = 4;

if (x == 1) {
  // Do stuff
} else if (x == 2) {
  // Do stuff because x isn't 1
} else if (x == 3) {
  // Do stuff because x isn't 1 or 2
} else {
  // Do stuff because x isn't 1, 2 or 3
}
于 2012-06-08T23:00:53.813 に答える
1

最後のものelse

if (let==m)

そのため、次}は前のelseを閉じ、 は閉じmain()られていません}

ifこれらの間違いを避けるために、 /のelseペアを同じレベルにインデントしておくことが一般的に最善です

于 2012-06-08T23:01:01.680 に答える