这段代码如何运行的,请教各位

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    switch(month-1)

    {

        case 12:day+=31;

        case 11:day+=30;

        case 10:day+=31;

        case 9:day+=30;

        case 8:day+=31;

        case 7:day+=31;

        case 6:day+=30;

        case 5:day+=31;

        case 4:day+=30;

        case 3:day+=31;

        case 2:if((year%4==0 && year%100) || year%400==0) day+=29; else day+=28;

        case 1:day+=31;

    }

    printf("2008年8月8日是该年的第%d天",day);

return 0;

}

这是如何进行运行的?


街角疯
浏览 1263回答 2
2回答

不偏不易

首先这里的代码是没有错的,计算是8月8日是第几天,那前7月是全的,8月只过8天,day=8,然后用day去一个个月加过去,7月:day=day+31;以此类推到1月:day=day+31。month为8,switch里条件month-1为7,一点问题都没有。看一下switch那一章。有一句话,你可能没有注意,大概是当没有break的时候,switch会向下一直执行下去。这里的话,month-1为7的时候,就会从case 7 ,一直到case 1,然后才结束switch.所以这里花式的计算了足月的天数,8月8日,中,switch里帮你计算了8天加上1-7月的天数和。附:http://www.imooc.com/code/5207 在使用switch语句时还应注意以下几点:1、在case后的各常量表达式的值不能相同,否则会出现错误。2、在case子句后如果没有break;会一直往后执行一直到遇到break;才会跳出switch语句。
打开App,查看更多内容
随时随地看视频慕课网APP