2012-06-08 119 views
0

我们的老师给出的任务是创建一个程序,要求询问两个整数xy和一个字符z。输入的z的字母可能是a,它会加上两个整数,s会减去它们,m乘以d除法。嵌套if语句:预期声明或输入结尾处的语句

老师试图在课堂上解释多个'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); 

} 
+0

为你添加修正版本,它真的很简单,因为你将是您使用哪种系统找到 –

+0

?你的编辑器是否提供了一种方法来找到匹配的'{'''''''?它不提供自动缩进吗? –

+1

无关的问题:你比较'if(let == a)'(和s,m,d类似),这意味着你将扫描的字母与未初始化的变量'int a;'进行比较。你应该比较'if(let =='a')'到字符常量''a''(等)。 –

回答

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 
} 
1

最后else属于

if (let==m) 

所以未来}关闭以前一样,和main()缺少闭幕}

它一般是最好将if/else对缩进到sa我的水平,以避免这些错误

+0

好的,很酷。谢谢! – user1445502

4

这是典型的缩进问题。

你肯定知道的一件事是,你不能有两个'其他人的相同IF。如果你按照你的代码,你会看到:

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 
+0

好的,非常感谢你的解释!我明白你指出了什么。 Idk为什么剧本的其余部分没有显示,但现在我知道该找什么了!再次感谢 – user1445502

+0

我只是想让事情变得简单,其余的代码是好的:) –