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

来源:4-17 switch与if语句的应用

湘滦

2018-09-24 02:03

#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;
}


写回答 关注

5回答

  • 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

    湘滦

    刚开始学 还没到大道 试一试不一样的东西

    2018-09-24 23:43:07

    共 1 条回复 >

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

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

    痫yu 回复湘滦

    然后因为你的for循环,所以开始第二次了,k=2的时候,i被求和成了28,然后那么sum就会是2个day的值以及i的值的和了喔.(这里很明显就已经有问题了吧?),此外,由于你的输出是在for循环里的,那么就又会再输出一遍。然后到了第三次循环,k=3了,进入case 3,而case 3也是空的,那么就就等于是做了k=2的时候的操作了,sum就会是3个day的值以及2个i的值的和了.所以说,从一开始你的思路就不对..

    2018-09-28 14:29:17

    共 4 条回复 >

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

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

    湘滦 回复湘滦

    对不起。。。

    2018-09-24 23:51:49

    共 2 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926023 学习 · 20793 问题

查看课程

相似问题