2017-06-02 2 views
0

これは私のC introductionウェブクラスの割り当てです。 (進行中)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であれば、両方の結果を印刷するようですを確認してください。両方ともの条件を満たす必要がありますか?それとも達成することができますか?

edit3:

非常に早い回答に感謝します。そのサイトで許可された時点で解決済みとマークされます。

+3

'削除;' sのあなたの 'if'条件の後から。タイプミスとしてクローズする投票。 – aschepler

+0

このような場合、2つの 'if'の代わりに' else if'を使うべきです。それ以外の条件は正しい、それはちょうど ';'のタイプミスです。 – Isuka

答えて

1

条件

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

はそうあなたのメッセージは関係なく、あなたが

がそれらを削除するには、入力として与えるものを印刷されません場合は、すべての中の余分な半色を持っています。代わりに、もし他の条件を使用します。if()

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()用のブランク声明を出します。したがって、文printf()は内部にはありませんif()

1

削除するだけです。 ifステートメントから。残りは問題ありません。

0

問題を明確にするために、ifの後に角括弧を使用しないと、ブロック内に1行のコードしか挿入されません。そして、行が;で終わると、ただ;を置くだけでそこに空の行が置かれます。このように:

if (condition) 
    ; 
next line.... 

ブラケットは、ブロックの場合は1行ではオプションですが、それ以上の行がある場合は必須です。例えば:この他に

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

、あなたはこれを行うことによって2回'm'のチェックを回避することができます:

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