C:如何确保必须满足两种情况才能打印



这是我的C简介Web类的分配。

源代码(正在进行中(:

#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:

感谢您的非常快的答案!当网站允许我这样做时,将标记为解决。

您在每个条件

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

,无论您给出什么输入

,您的消息都将被打印

删除这些;并使用其他条件:

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

您只需要删除即可;从if语句。休息很好。

if (sex == 'm' && age <= 55);
if()之后的;if()进行了空白。因此,语句printf()不在if()

要澄清问题,如果在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!");
    }
}

最新更新