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

不知道问题出在哪里,求大佬帮助

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

     * 请使用swtich语句,if...else语句完成本题

     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”

     * 小编还是希望大家独立完成哦~

     */

   int sum=0;

   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:sum+=29;

        case 2:sum+=30;

        case 1:sum+=day;break;

   }

    

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

    //如果为真那么是闰年,闰年中大于2月份都要加一天

    {

        sum+=day+1;

    }

    else

    {

        sum+=day;   

    }

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

    return 0;

}


提问者:慕尼黑9453358 2018-07-04 20:10

个回答

  • 慕工程9443490
    2018-07-04 21:53:36

    我第一次也是犯了跟你一样的错误,对于各种case其实是每个分支,上面分支的sum在遇到break后就不会再把它的值传递到下一个case中去了,所以必须自己算出每种case中num的值,具体可以参考小编的思路