C:如何确保印刷时必须满足两个条件

时间:2017-06-02 12:17:47

标签: c

这是我的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!

是的,所以,如果回答&#34; sex&#34;是m,如何确保必须满足条件?或者甚至可以实现这个目标吗?

EDIT3:

谢谢你的快速答案!当网站允许我时,将标记为已解决。

4 个答案:

答案 0 :(得分: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 :(得分:1)

if (sex == 'm' && age <= 55);
;之后的if()if()生成一个空白的对帐单。因此,printf()语句不在if()

答案 2 :(得分:1)

你只需要删除;来自if语句。休息很好。

答案 3 :(得分:0)

为了澄清这个问题,如果在if之后你没有使用括号,那么只有一行代码会在其块内。当行以;结尾时,只需放置一个;,就会在那里放置一条空行。像这样:

if (condition)
    ;
next line....

对于单行if块,括号是可选的,但如果有更多行则是必需的。例如:

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!");
    }
}