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

求问大神,我这样可以写可以吗?

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

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

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

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

     */

    int sum=0;

    switch(month)

    {

      case 1:sum+=31;break;

      case 2:if(year%4&&year%100==0||year%400==0)

             sum+=29; else sum+=28;break;

      case 3:sum+=31;break;

      case 4:sum+=30;break;

      case 5:sum+=30;break;

      case 6:sum+=31;break;

      case 7:sum+=30;break;

      case 8:sum+=31;break;

      case 9:sum+=31;break;

      case 10:sum+=30;break;

      case 11:sum+=31;break;

      case 12:sum+=30;break;

      sum=sum+day;

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

    } 

return 0;

}


提问者:穿梭时间 2019-03-22 18:58

个回答

  • qq_慕无忌124643
    2019-03-22 19:28:20
    已采纳

    不可以这样写,你的sum只累积了某个月的天数,并没有累计其他月份的天数

  • 穿梭时间
    2019-03-22 19:31:14

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

        int year = 2008;

        int month = 8;

        int day = 8;

        /*

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

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

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

         */

        int sum=0;

        int i;

        for(i=1;i<month;i++)

        {

            switch(month)

            {

             case 1:sum+=31;break;

             case 2:if(year%4==0&&year%100!=0||year%400==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;

            }  

        }

          sum=sum+day;

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

    return 0;

    }