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

大佬帮忙指点一下哪里错了

#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;

     int k,sum,i=0,j=0,f=0,n=0;
     for(k=0;k<=month;k++)
     {
         switch(k)
         {
            case 0:
           n=0;
           break;
          case 1:
          case 3:
          case 5:
          case 7:
          case 8:
          case 10:
          case 12:
          j+=31;
          break;
          case 2:
          f+=28;
          break;
          case 4:
          case 6:
          case 9:
          case 11:
          i+=30;
          break;
         }
         sum=i+j+f+n+day;
         if(year%400==0&&month>2)
         {
             printf("这是一年中的第%d天",sum+1);
         }
         else
         {
             printf("这是一年中的第%d天",sum);
         }
   return 0;
}


提问者:湘滦 2018-09-24 02:03

个回答

  • L_JF
    2018-09-29 17:16:31

    标点符号

  • 郑楚周
    2018-09-27 21:36:54

    #include <stdio.h>

    int main() 


        int year = 2008;

        int month = 8;

        int day = 8;

        int febDays = 28;

        int totalDays = 0;

        

        /*计算二月份的天数

        闰年包括普通闰年和世纪闰年;

        普通年:能被4整除但不能被100整除的年份为普通闰年。(如2004年就是闰年,1999年不是闰年);

        世纪年:能被400整除的为世纪闰年。(如2000年是闰年,1900年不是闰年)*/

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

        {

            febDays = 29;

        }

        

        switch(month)

        {

            case 12:

                totalDays += 30;

            case 11:

                totalDays += 31;

            case 10:

                totalDays += 30;

            case 9:

                totalDays += 31;

            case 8:

                totalDays += 31;

            case 7:

                totalDays += 30;

            case 6:

                totalDays += 31;

            case 5:

                totalDays += 30;

            case 4:

                totalDays += 31;

            case 3:

                totalDays += febDays;

            case 2:

                totalDays += 31;

            case 1:

                totalDays += day;

            break;

        }

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

        return 0;

    }

  • 醉酒一逍遥
    2018-09-24 17:19:01

    写简单点不好吗?搞那么复杂,没人想看你的代码的。大道至简啊,兄dei

  • 痫yu
    2018-09-24 08:41:12

    另外要是月份只要是4月之后的你天数加起来怎么样都会是那么几十天..但实际上一年有365天.缺了好几个月啊.

  • 痫yu
    2018-09-24 08:36:35

    year不是应该磨上4=0吗..为什么是400?