为什么时先12到1呢,先1到12为什么是错误的

来源:4-17 switch与if语句的应用

against齐

2016-10-19 21:36

#include <stdio.h>

int main() 

    /* 定义需要计算的日期 */

    int year = 2008;

    int month = 8;

    int day = 8;

    int sum=day;

    int run=0;

    if ((year%400==0)||((year%4==0)&&(year/100!=0))){

        run=1;

    }

    

    switch(month){

        case 12: sum+=30;

        case 11: sum+=31;

        case 10: sum+=30;

        case 9: sum+=31;

        case 8: sum+=31;

        case 7: sum+=30;

        case 6: sum+=31;

        case 5: sum+=30;

        case 4: sum+=31;

        case 3: if(run){

            sum+=29;

        }else{

            sum+=28;

        };

        case 2: sum+=31;

        case 1: sum+=0;break;

        default: printf("wrong input");

    }

    

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

    return 0;

}


写回答 关注

2回答

  • 凉橙2
    2016-10-20 15:03:54

    我这个代码到底哪里错了呢?

    include <stdio.h>

    int main() 

        int year = 2008;

        int month = 8;

        int day   = 8;

        switch(day)

        {

            case 1 : day+=31; break;

            case 2: 

            if(2008%400==0||2008%4==0&&2008%100!=0)

            {

                day+=29;

              else

                day+=28;

            } 

            

            case 3 : day+=31; break;

            case 4 : day+=30; break;

            case 5 : day+=31; break;

            case 6 : day+=30; break;

            case 7 : day+=31; break;

            case 8 : day+=31; break;

            case 9 : day+=30; break;

            case 10 :day+=31; break;

            case 11: day+=30; break;

            case 12: day+=31; break;}

    printf("2008年8月8日是第%d天");

        


  • WatsonYu
    2016-10-19 22:51:20

    先12到1:计算的是8及其以下的(即87654321)

    先1到12:计算的是8及其以上的(即89101112)

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题