输入某年某月某日,判断这一天是这一年的第几天?

 用数组的作输入值,根据数组的元素 年,月,日 来算时间,主要是确定结构,我用switch ,先确定月份,其中2月份比较特殊,他有个闰年和平年区分 。

 

#include <stdio.h>
#include <stdlib.h>

//闰年 (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
int Leap( int x)
{

    if(x%100==0 )
    {
      if(x%400==0)
       {
           return 1;
       }
       else
       {
          return 0;
       }
    }
    else
    {
       if(x%4==0)
       {
           return 1;
       }



int main()
{
    int In_Time[3];//输入时间
    int reward;//润年的返回值
    int a; //月份的值
    int c; //月的返回值
    int d; //天数
    printf("请输入时间格式:年 月 日\n");
    for(int i=0;i<3;i++)
    {
         scanf("%d",&In_Time[i]);
    }

   reward=Leap(In_Time[0]);
   a=In_Time[1]%12;
    switch(a)
    {


    case 1:
           c=0;
           break;
    case 2:
           c=31;
           break;
    case 3:
           c=59;
           break;
    case 4:
           c=90;

           break;
    case 5:
           c=120;

           break;
    case 6:
           c=151;

           break;
    case 7:
           c=181;

           break;
    case 8:
           c=212;

           break;
    case 9:
           c=243;

           break;
    case 10:
           c=273;

           break;
    case 11:
           c=304;

           break;

    case 0:
           c=334;

           break;

    default:
         printf("系统bug\n");
     }

    if(In_Time[1]>3)
    {
      d=c+In_Time[2]+reward;

    }
     else
     {
         d=c+In_Time[2];

     }

    printf("这是一年的第%d天",d);
    return 0;
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过计算这一天与这一年11之间的天数差来确定这一天是这一年第几天。具体步骤如下: 1. 计算这一年11到这一的天数总和,记为days。 2. 如果这一年是闰输入份大于2,则需要加上1天。 3. 将输入份之前的所有份的天数加上,记为monthDays。 4. 将输入数加上monthDays和days,即为这一天是这一年第几天。 例如,输入2021315,则: 1. 11到31的天数为31+28=59天。 2. 2021不是闰,因此不需要加1天。 3. 315之前的所有份的天数为31天,因此monthDays=31。 4. 这一天是第15天,因此这一天是这一年的第59+31+15=105天。 ### 回答2: 输入某年某月某日,需要先判断一年是否为闰。闰是指能够被4整除但不能被100整除的份,或者是能够被400整除的份,例如2000判断份是否为闰后,再统计这一天是这一年第几天。 具体的方法是,先算出这个之前所有份的天数之和,再加上这个的天数,如果是闰且这个在2份之后,还需要再加一天。 举个例子,假设输入期是20211021,首先需要判断一年是不是闰。2021不是闰,因为不能被4整除。然后将十之前所有份的天数加起来,131天+228天(因为不是闰)+331天+430天+531天+630天+731天+831天+930天,总共是273天。再加上这个的21天,总共是294天。 因此,20211021是这一年的第294天。 这个方法在程序中可以用不同的编程语言实现,例如C++、Python等。实现时需要注意输入期格式和闰判断的条件。 ### 回答3: 首先需要了解一年中各份的天数。一年共有365或366天,一般情况下,我们把一年按照365天计算。其中1、3、5、7、8、10、12为31天,4、6、9、11为30天,2不同份天数不同,闰为29天,平为28天。 现在输入,我们需要判断是否为闰(被4整除但不被100整除或被400整除的份为闰),如果是闰,2就有29天,否则为28天。接着,利用输入,计算出当的前几个份所包含的天数和当的天数,即可得到该天是该第几天。 以202235为例,该为平,前两个份共有31+28=59天,35是第5天,因此35是2022的第64天。 计算公式: 1、判断是否为闰: (1)能被4整除但不能被100整除的份为闰,如2004就是闰,1900不是闰。 (2)能被400整除的份也是闰,如2000是闰。 2、计算天数: 以35为例,2022前两个份天数之和为31+28=59,3份天数为5,则总天数为59+5=64。数学表达式为: 前两个份天数之和+当天数=总天数 如果1219是2000第几天,计算方法如下: 第一步:判断是否为闰。2000能被400整除,是闰。 第二步:根据每个份的天数计算前11个份的天数总和,即1-11的天数之和为:31+29+31+30+31+30+31+31+30+31+30=351。 第三步:加上当天数,即:351+19=370。 第四步:得出答案:1219是2000的第370天。 综上所述,计算某年某月某日是该第几天,需要了解一年中各份的天数,再判断是否为闰,最后计算前几个份的天数总和和当天数即可得出答案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值