为了账号安全,请及时绑定邮箱和手机立即绑定

这个对吗?

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


正在回答

3 回答

有一点是没有考虑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");

下面就一样了

1 回复 有任何疑惑可以回复我~

case 12;sum=xxxxx

default...

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

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

进入课程

这个对吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信