2017-06-02 94 views
0

這是我的C介紹web類的作業。C:如何確保兩個條件都必須滿足打印

的源代碼(在建):

#include <stdio.h> 

    int main() 
    { 
     int age, output; 
     char sex, test; 

     printf("Oletko mies vai nainen (m/n)? "); 
      scanf("%c", &sex); 



     printf("Anna ikäsi: "); 
      scanf("%d", &age); 

     if (sex == 'm' && age <= 55); 
     { 
      printf("Olet mies parhaassa iässä!"); 
     } 

     if (age >= 56 && sex == 'm'); 

     { 
      printf("Olet viisas mies!"); 
     } 


    } 

結果:

Oletko mies vai nainen (m/n)? m 
Anna ikäsi: 23 
Olet mies parhaassa iässä!Olet viisas mies! 

正確的,所以,這似乎同時打印的結果,如果答案爲 「性」 是m,我該怎麼辦確保都必須符合條件?或者甚至可以實現?

編輯3:

感謝您的極快答案!將標記爲當網站允許我解決。

+3

刪除';'是從你們'if'條件後。投票結束爲錯字。 – aschepler

+0

在這種情況下,你應該去'else if'而不是兩個'if'。否則你的條件是正確的,這只是所謂的錯字。 – Isuka

回答

1

你在每一個有一個半色額外如果條件

if (sex == 'm' && age <= 55); 
{ 
    printf("Olet mies parhaassa iässä!"); 
} 
if (age >= 56 && sex == 'm'); 
{ 
    printf("Olet viisas mies!"); 
} 

這樣的郵件會被無論你給什麼作爲輸入

不要刪除這些印刷;並使用的if else代替條件:

if (sex == 'm' && age <= 55) 
{ 
    printf("Olet mies parhaassa iässä!"); 
} 
else if (age >= 56 && sex == 'm') 
{ 
    printf("Olet viisas mies!"); 
} 
1

if (sex == 'm' && age <= 55);
;if()後使空語句if()。因此,語句printf()不在if()

1

您只需要刪除;來自if語句。休息很好。

0

爲了說明問題,如果在if之後沒有使用括號,那麼只有一行代碼將位於其塊內。並且由於行以;結尾,只需放置一個;即可在此處放置一條空行。像這樣:

if (condition) 
    ; 
next line.... 

如果塊爲單行,則括號是可選的,但如果有更多行,則括號是必需的。例如:

if (condition) 
    something; 
else if (condition2) 
{ 
    something_else; 
} 
else if (condition3) 
{ 
    something_else; 
    something_else; 
} 

除此之外,您可以避免這樣做檢查'm'兩次:

if (sex == 'm') 
{ 
    if (age <= 55) 
    { 
     printf("Olet mies parhaassa iässä!"); 
    } 
    else if (age >= 56) 
    { 
     printf("Olet viisas mies!"); 
    } 
}