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

这个对吗?

#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
 int sum;
   switch(month)
   {
  case 1:sum=0;
   break;
     case 2:sum=31;
   break;
     case 3:sum=59;
   break;
  case 4:sum=90;
   break;
  case 5:sum=120;
   break;
  case 6:sum=151;
   break;
  case 7:sum=181;
   break;
  case 8:sum=212;
   break;
  case 9:sum=243;
   break;
  case 10:sum=273;
   break;
  case 11:sum=304;
   break;
  default:sum=334;

   }
 if ((year%4==0&&year%100!=0)||year%400==0)
 {
  if(month>=3)
  {
   printf("第%d年第%d月第%d天是该年的第%d天",year,month,day,sum=sum+day+1);
  }
  else
  {
    printf("第%d年第%d月第%d天是该年的第%d天",year,month,day,sum=sum+day);
  }
  
 }
    else
 {
           printf("第%d年第%d月第%d天是该年的第%d天",year,month,day,sum=sum+day);
 }
   
   return 0;
}


提问者:慕九州0515011 2017-09-19 15:16

个回答

  • 慕斯卡1274646
    2017-09-19 16:29:05
    已采纳

    有一点是没有考虑0-12月外的数字。还有就是有点麻烦,需要计算前几个月相加的和。建议你这样试一下:

    #include<stdio.h>

    int main(void)

    {

        int year = 1996, month = 9, day = 14, num = 0, m;

        switch(month)

        {

            case 12 : num += 30; //11月的天数

            case 11 : num += 31;

            case 10 : num += 30;

            case 9 : num += 31;

            case 8 : num += 31;

            case 7 : num += 30;

            case 6 : num += 31;

            case 5 : num += 30;

            case 4 : num += 31;

            case3 : num += 28;

            case2 : num += 31;

            case1 : num += 0;

                        break;

            default : printf("一年只有12个月哦~\n");

    下面就一样了

  • 幕布斯6262511
    2017-09-19 16:21:37

    case 12;sum=xxxxx

    default...

  • 慕粉4138201
    2017-09-19 16:00:46

    好像有漏洞哦, switch语句没有考虑到0-12月外的数字。  default:printf("%s","请输入正确的月份");break;