问答详情
源自:4-17 switch与if语句的应用

求指点 到底哪错了

#include <stdio.h>
int main()
{
    int year = 2008;
    int month = 8;
    int day = 8;
    int sum,F;
    switch(month)
    {
        case 1:sum=0;break;
        case 2:sum=31;break;
        case 3:sum=59;break;
        case 4:sum=90;break;
        case 5:sum=120;break;
        case 6:sum=151;break;
        case 7:sum=181;break;
        case 8:sum=212;break;
        case 9:sum=243;break;
    }
    sum+=day;
    if(year%4==0)
    F=1;
    else
    F=0;
    if(month>2)
    sum++;
    printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);
 return 0;
}

提问者:Noidea_0 2015-12-15 21:08

个回答

  • eyes4
    2015-12-16 12:16:48

    1. 闰年计算有问题,世纪年可以被4整除,但不是闰年,如2000

    2. 这里代码有问题:

     if(month>2)
        sum++;

    应该为:

     if(month>2)
        sum+=F;


  • 流浪_老
    2015-12-16 08:47:24

    #include <stdio.h>

    int main() 

        int year = 2008;

        int month = 8;

        int day = 8;

        int sum,F;

        switch(month)

        {

            case 1:sum=0;break;

            case 2:sum=31;break;

            case 3:sum=59;break;

            case 4:sum=90;break;

            case 5:sum=120;break;

            case 6:sum=151;break;

            case 7:sum=181;break;

            case 8:sum=212;break;

            case 9:sum=243;break;

        }

        sum+=day;

        if(year%4==0)

        F=1;

        else

        F=0;

        if(month>2)

        sum++;

        printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);

     return 0;

    }

    这代码是没错啊 你是想说逻辑错误?

  • 红颜未知己
    2015-12-15 22:29:47

    楼主贴的应该不是完整的代码吧?

  • 红颜未知己
    2015-12-15 22:29:14

    #include <stdio.h>
    int main() 
    { 
        int year = 2008;
        int month;
        int day = 8;
        int sum,F;
        printf("请输入数字(1-9):");
        scanf("%d",&month)
        switch(month)
        {
            case 1:sum=0;break;
            case 2:sum=31;break;
            case 3:sum=59;break;
            case 4:sum=90;break;
            case 5:sum=120;break;
            case 6:sum=151;break;
            case 7:sum=181;break;
            case 8:sum=212;break;
            case 9:sum=243;break;
        }
        sum+=day;
        if(year%4==0)
            F=1;
        else
            F=0;
        if(month>2)
            sum++;
        printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);
     return 0;
    }