C语言:输入日期,判断输入的日期是该年的第几天

1.判断闰平年

1.1代码实现思路

闰年:当年份可以把4整除,并且不能把100整除,或者能把400整除的年份是闰年。
平年:除了闰年都是平年。

1.2代码实现:

if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)//闰年
  {
  }
  else//平年
  {
  }

2.闰平年的区别

闰年:二月份有29天。
平年:二月份有28天。
除了二月份,其他月份天数一样,如下:
一月:31天,二月:区分闰平年,三月:31天,四月:30天,五月:31天,六月:30天
七月:31天,八月:31天,9月:30天,十月:31天,十一月:30天,十二月:31天。

2.1代码实现思路

闰年和平年除了二月以外,其他每个月的天数都一样,可以设置一个数组a用来保存每个月的天数。
数组下标从‘0’开始,因此可以将数组下标设置为13,使数组下标和月份一一对应,a[0]保存输入日期的几号。

2.2代码实现:

  int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  printf("请输入日期,用-隔开,如1999年5月1日,则输入1999-5-1:\n");
  scanf("%d-%d-%d",&y,&m,&d);
  a[0]=d;

3.判断该日期是该年的第几天

3.1整体代码实现思路

设置3个int型变量(y,m,d),用于保存输入的年、月、日;在另外设置1个int型变量(sum),用于计算该日期是该年的第几天。
无论闰年还是平年,除了二月份的天数不同,其他都一样,设置数组a保存天数。
判断当前日期是该年的第几天,需要统计当前月份之前几个月的总天数,加上本月几号,因此把输入的第几号存放到a[0],方便计算,可以结合使用for循环快速算出。

3.2整体代码:

#include<stdio.h>
int main(int argc, char const *argv[])
{
  int y,m,d;
  int sum=0;
  int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  printf("请输入日期,用-隔开,如1999年5月1日,则输入1999-5-1:\n");
  scanf("%d-%d-%d",&y,&m,&d);
  a[0]=d;
  if (y%4==0&&y%100!=0||y%400==0)//闰年
  {
    a[2]=29;
  }
  else//平年
  {
  //a[2]=28;
  }
  for (int i = 0; i < m; i++)//统计当前月份之前几个月的总天数,加上本月几号,a[0]=d
  {
    sum+=a[i];
  }

  printf("%d年%d月%d日是%d年的第%d天\n",y,m,d,y,sum);
  
  return 0;
}

3.3代码运行结果

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值