scanf并且在c中不执行任何切换大小写

时间:2018-07-09 21:01:05

标签: c

该代码应计算calculate年。我还没吃完 包括所有计算此费用的案例,但无论它不是在每种情况下都涉及,而只是跳至默认值。我刚开始练习C 因此,在这里进行详细的说明确实很有帮助。

#include <stdio.h>

int main()
{
    int year;

    printf("Enter a year you wish to check is a leap year\n");
    scanf(" %d", &year);

    switch(year)
    {
        case 1: //does not go into this case 
            if(year%4 == 0)
            {
                printf("leap year\n"); 
            }
            break;
        case 2: //does not go into this case
            if(year%100 == 0 && year%400 == 0)
            {
                printf("leap year\n"); 
            }
            break;
        default:
            printf("not a leap year\n");
    }

    return 0;
}

4 个答案:

答案 0 :(得分:3)

get ':category/:location', to: 'locations#action1' get ':category/:location/:sublocation', to: 'locations#action2' get ':category/:location/:sublocation/:subsublocation', to: 'locations#action3' 语句没有带编号的子句,例如“子句#1”和“子句#2”,而是针对文字值switch和{{1 }}。您的意思可能是:

year

然后您可以在代码主体中使用该功能:

1

通过将其放入函数中,可以针对多种情况进行快速测试。您要确保1900年不是a年,2000年和2004年是2年,而2100年不是a年。

答案 1 :(得分:2)

似乎您对switch语句有点误解。这是您给出的示例:

switch(year)
{
    case 1: //does not go into this case 
        if(year%4 == 0)
        {
            printf("leap year\n"); 
        }
        break;
    case 2: //does not go into this case
        if(year%100 == 0 && year%400 == 0)
        {
            printf("leap year\n"); 
        }
        break;
    default:
        printf("not a leap year\n");
}

这与使用if语句等效

if (year == 1) 
{
    if(year%4 == 0)
    {
        printf("leap year\n"); 
    }
} 
else if (year == 2) 
{
    if(year%100 == 0 && year%400 == 0)
    {
        printf("leap year\n"); 
    }
} 
else 
{
    printf("not a leap year\n");
}

每个“案例”实际上只是将年份与给定值进行比较。相反,我建议使用if语句检查是否是a年。

if(year%4 == 0)
{
    printf("leap year\n"); 
}
else if(year%100 == 0 && year%400 == 0)
{
    printf("leap year\n"); 
}
} 
else 
{
    printf("not a leap year\n");
}

如果您想了解有关switch语句的更多信息,请参见以下资源: https://www.tutorialspoint.com/cprogramming/switch_statement_in_c.htm

答案 2 :(得分:1)

现在,您的代码正在检查输入1或2作为年份的用户。对于任何其他年份(例如,2018年),它将直接跳至default标签。

我猜(但我会承认,我不确定),您想要更多类似的东西:

switch ( year % 4 ) { 
    case 0:
        if (year % 100 == 0 && year % 400 != 0) {
            printf("Not a leap year");
            break;
        }
    default:
        printf("leap year");
}

尽管使用switch并不能带来很多好处,但它也可以是if

答案 3 :(得分:0)

#include <stdio.h>

int main()
{
    int year;

    printf("Enter a year you wish to check is a leap year\n");
    scanf(" %d", &year);

    switch (year % 4)
    {
    case 0:
        if (year % 100 == 0)
        {
            printf("\"Century\" can't be leap year\n");

        }
        else
            printf("leap year\n"); 
        break;

    case 3:
        printf("Next year is a leap year.\n");

    default:
        printf("not a leap year\n");
        break;
    }
    return 0;
}