2016-01-30 166 views
-5

我正在製作一個貪婪算法來計算存儲在變量中的一個以美分計算的硬幣數量。基本上我已經完成了所有的工作,但我無法區分單位和複數的面額(例如,打印「1個季度」而不是「1個季度」),以及我如何在順序條件下對於每個面額,我無法對每個硬幣進行單數或複數分化,因爲它會讓我返回兩個季度和四分之一,而不是兩者之一,所以我試圖使用if else語句,但它說else語句基本上沒有if語句與我不明白的關係。我的編譯器還說,由於某種原因嵌套在另一箇中的if語句有「無身體」。C:爲什麼我嵌套的if else語句不起作用

不介意scanf,一旦我找到其餘的問題,我會改變爲更好的輸入法。

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
int main (void) 
{ 
    int n; 
    scanf("%d",&n); 
    int q = (n/25); 

    if (n > 24) 
    { 
    if (n > 49); 
     printf("%d quarters\n", q); 

    else 
     printf("one quarter\n"); 
    } 
    return 0; 
} 

回答

1

你在你的代碼的語法錯誤。 if (n > 49); {。這一行是錯誤的,在開始括號之前不應該有分號。嘗試這個。

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 

int main(void) { 
    int n; 
    scanf("%d", & n); 
    int q = (n/25); 
    if (n > 24) { 
     if (n > 49) { 
      printf("%d quarters\n", q); 
     } else { 
      printf("one quarter\n"); 
     } 
    } 
    return 0; 
} 
0

後刪除分號:

if (n > 49); 
0

這條線:

if (n > 49); 

有一個分號。該分號被視爲if語句真正路徑的主體。你也必須得到關於不匹配的else的編譯器錯誤。

僅供參考:您有時會看到一個像這樣的空表達式,用於編寫沒有主體的循環。

0

在問一個問題之前先搜索一下。 See this answer瞭解如何編寫if..elsenested if

if(
condition) 

if(condition) 

只允許NIT

if 
()