求大神帮忙 这个代码我打了好久但就是输不出来

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

emmmmmmok

2019-08-10 12:42

int year = 2008;

    int month = 8;

    int day = 8;

    int a;

    switch(year%=4)//余数不为零即为平年

      case 0:

      if(month>1)//区分出包不包含二月

         {

        a=(month-2)*30+day+29;

        //减2是因为:假设他是三月八号(假设是平年) 那么总天数a=(3-2)*30+28+8=64天  以此类推

             

         }

          case

          {

              a=day;

              

          } 

          printf("第%d天",a);

      break;

      default:

      if(month>1)

      {

      a=(month-2)*30+day+28;//减2是因为:假设他是三月八号(假设是平年) 那么总天数a=(3-2)*30+28+8=64天  以此类推

      

      }

         case

          {

              a=day;

             

          }

           printf("第%d天",a);

          break;


写回答 关注

2回答

  • 小小疾飞
    2019-08-10 14:13:14
    已采纳

    先不谈语法结构还有中文符号之类的种种问题。

    a=(month-2)*30+day+29;这个的话,一个月有31天30天 你这个算法是不成立的。从根本上就是错的。

    emmmmm...

    多谢大师指点

    2019-08-10 14:55:45

    共 1 条回复 >

  • 小小疾飞
    2019-08-10 14:35:29

    你看看我的代码。

    #include <stdio.h>

    int main() 

        int year = 2008;

        int month = 8;

        int day = 8;

        int r=0,days=0,yue=month;

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

        r=1;

        while(yue>1)

        {

        switch(yue-1)

        {

        case 4:

        case 6:

        case 9:

        case 11:days+=30;break;

        case 2:days+=28+r;break;

        default:days+=31;break;

        }

        yue--;

        }

        days+=day;

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

        return 0;

    }


C语言入门

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

926023 学习 · 20793 问题

查看课程

相似问题