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

到底哪里错了,请大神指教


我觉得我没错啊,可编译系统一直说 请检查输出是否包含:2008年8月8日是该年的第221天

提问者:萌新在此 2017-09-11 22:54

个回答

  • 露水小叶
    2017-09-12 13:57:37
    已采纳

    #include <stdio.h>
    int main() 
    { 
        /* 定义需要计算的日期 */
        int year = 2008;
        int month = 8;
        int day = 8;
        int sum,i;
        sum = day;
        /*
         * 请使用switch语句,if...else语句完成本题
         * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
         * 小编还是希望大家独立完成哦~
         */
              for( i= 1; i < month; i++){
             switch(i){
                 case 1: 
                 case 3:
                 case 5:
                 case 7: 
                 case 8:
                 case 10:
                 case 12: 
                    sum+= 31;
                    break;
                 case 4:
                 case 6:
                 case 9: 
                 case 11:
                    sum+= 30;
                    break;
                case 2:
                    if(year%4 == 0){
                        sum+= 29;
                    }else{
                        sum+= 28;
                    }
                    break;
             }
             
         }
         printf("%d年%d月%d日是该年的第%d天",year,month,day,sum); 
    }

    哈哈。这样更简洁。我不喜欢慕课那个逻辑。

  • 露水小叶
    2017-09-12 09:39:33

    不知道你的hello.c代码是不是你写的,我copy来执行并没有错。

    这是我的代码:

    #include <stdio.h>
    int main() 
    { 
        /* 定义需要计算的日期 */
        int year = 2008;
        int month = 8;
        int day = 8;
        int sum,i;
        sum = day;
        /*
         * 请使用switch语句,if...else语句完成本题
         * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
         * 小编还是希望大家独立完成哦~
         */
              for( i= 1; i < month; i++){
             switch(i){
                 case 1: sum+= 31;break;
                case 2:
                    if(year%4 == 0){
                        sum+= 29;
                    }else{
                        sum+= 28;
                    }
                    break;
                case 3:
                    sum+= 31;
                    break;
                case 4: sum+= 30; break;
                case 5: sum+= 31;break;
                case 6: sum+= 30;break;
                case 7: sum+= 31;break;
                case 8:sum+= 31;break;
                case 9:sum+= 30;break;
                case 10:sum+= 31;break;
                case 11:sum+= 30;break;
                case 12:sum+= 31;break;
             }
            
         }
         printf("%d年%d月%d日是该年的第%d天",year,month,day,sum); 
    }