2016-10-28 43 views
-1

對於我的C作業,我需要輸入捐贈金額,輸入請求和完成請求。基本上,我有一個名爲donType [i]的數組,其範圍從0到4. donType [0]表示蛋白質請求,donType [1]表示乳製品請求,dontype [2]表示糧食請求,等等,你會看到我的代碼。如果任何捐贈類型的庫存爲0(意味着沒有捐贈添加到數組的值),那麼我希望它打印「類型捐贈無法實現」,其中類型代表食物類型(蛋白質,乳製品,穀物等) )。如果我將所有庫存設置爲0,它將只打印「蛋白質請求無法滿足」,因爲它應該打印所有請求,因爲無法完成。下面是我的代碼的一部分:如何掃描所有「else if」條件 - C

 if (donType[0] == 0) 
      printf("Protein requests cannot be fulfilled.\n"); 
     else if (donType[1] == 0) 
      printf("Dairy requests cannot be fulfilled.\n"); 
     else if(donType[2] == 0) 
      printf("Grain requests cannot be fulfilled.\n"); 
     else if (donType[3] == 0) 
      printf("Vegetable requests cannot be fulfilled.\n"); 
     else if (donType[4] == 0) 
      printf("Fruit requests cannot be fulfilled.\n"); 

所以它停止其掃描後donType [0]等於0。我怎樣才能讓我的代碼繼續if語句通過別的掃描?請記住,我是新手,所以我不需要任何複雜的答案。謝謝你的幫助!

+2

你可能想閱讀關於if語句和它的工作原理。不清楚你的問題是什麼。看[問]並提供[mcve]。 – Olaf

+1

取出所有'else' –

+0

'if'主體的大括號阻止代碼編譯(第一個'else'沒有'if'匹配)。你可能應該使用循環而不是寫出幾乎相同的代碼5次。你可以有一個捐贈類型名稱數組:'char * donTypeName [] = {「Protein」,「Dairy」,「Grain」,「Vegetable」,「Fruit」};'和'for(int i = 0; i (if(donType [i] == 0)printf(「%s請求不能被滿足\ n」,donTypeName [i]); ''或大約。 –

回答

4

這些條件並不相互排斥,所以只要刪除else關鍵字,以使它們都是獨立的if語句。

+1

爲什麼這會降低投票率?這很簡短,但它是正確的。 –

+0

哈哈感謝,沒有意識到它是那麼簡單! – Josh

1

你需要替換否則,如果報表如果語句

if (donType[0] == 0) 
    printf("Protein requests cannot be fulfilled.\n"); 
if (donType[1] == 0) 
    printf("Dairy requests cannot be fulfilled.\n"); 
if(donType[2] == 0) 
    printf("Grain requests cannot be fulfilled.\n"); 
if (donType[3] == 0) 
    printf("Vegetable requests cannot be fulfilled.\n"); 
if (donType[4] == 0) 
    printf("Fruit requests cannot be fulfilled.\n"); 
+0

謝謝!正是我需要的。 – Josh

+0

他需要實際替換'else if'語句的'else'語句。你有它回到前面。 – EJP

0

它是完全自然的,你的代碼將停止一旦條件滿足。在C++時如果條件得到滿足,則跳過否則聲明。

否則如果基本上是一個其他聲明,您可以重複使用。

在你的情況,以檢查你需要用一個簡單的如果語句來代替否則,如果語句中的所有條件。

 if (donType[0] == 0) 
     printf("Protein requests cannot be fulfilled.\n"); 
    if (donType[1] == 0) 
     printf("Dairy requests cannot be fulfilled.\n"); 
    if(donType[2] == 0) 
     printf("Grain requests cannot be fulfilled.\n"); 
    if (donType[3] == 0) 
     printf("Vegetable requests cannot be fulfilled.\n"); 
    if (donType[4] == 0) 
     printf("Fruit requests cannot be fulfilled.\n"); 
+1

請注意,此問題被標記爲[tag:c]而不是[tag:C++]。 –

+0

不應有'{}'你擁有它 –

0

在遇到第一條if語句的真實條件後,else部分被跳過。因爲所有條件都是相互獨立的,所以刪除其他條件。在你的情況中,如果第一個if語句評估爲真,其餘的語句將被忽略。