2012-06-08 77 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

我只是想讓事情變得簡單,其餘的代碼是好的:) –