0

我们老师的作业是创建一个程序,要求输入两个整数xy一个字符z。输入的字母z可能是a,它将添加两个整数,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

这是典型的缩进问题。

您肯定知道的一件事是,同一个 IF 不能有两个 '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

你有两个} else {块。

您只需要一个 } 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 回答