2017-06-02 85 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!"); 
    } 
} 
相关问题