给出年、月、日,计算该日是该年的第几天。

28 篇文章 3 订阅
14 篇文章 1 订阅

给出年、月、日,计算该日是该年的第几天。

//大多数情况下列出 每个月的默认天数(如果是闰年后面再修改)
//默认 1、3、5、7、8、10、12每月31天,二月闰年29天,平年28天,其余月份30天 

/*
给出年、月、日,计算该日是该年的第几天。 
*/

#include <stdio.h>
#define n 8
//大多数情况下列出 每个月的默认天数(如果是闰年后面再修改)
//默认 1、3、5、7、8、10、12每月31天,二月闰年29天,平年28天,其余月份30天 
int month[13] = {0,31,28,31,30,
				 31,30,31,31,
				 30,31,30,31 
								};
//判断年份是否为闰年 
int judgement_leap(int i)
{
	if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
	{
		return 1;
	}
	return 0;
}
//获取其为该年的第几天 
void get_date(int a[])
{
	int date = 0,year = 0,mon = 0,day = 0;
	year = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];//年 
	mon = a[4] * 10 + a[5];//月 
	day = a[6] * 10 + a[7];//日 
	
	if(mon > 2)//如果月份大于2月,说明需要判断该年是否为闰年(闰年和平年 2月份天数不一样)
	{
		if(judgement_leap(year) == 1)//是闰年
		{
			month[2] = 29;//2月份天数变为29天.(数组第一个下标没有用,方便月份与下标统一) 
		}
		else;//不是闰年 是平年,就保存默认28天 
	} 
	
	
	//该年第几天(数组从1开始,停止再mon前)
	//加前几个月天数 
	for(int i = 1;i <= mon - 1;i ++ )
	{
		date = date + month[i];
	}
	//加当前月份天数
	date = date + day; 
	//打印 
	printf("是%d年的第%d天",year,date);
	return;
}
 
int main()
{
	//数组构成 年 4位,月份2位,日 2位
	int a[n] = {0};
	for(int i = 0;i < n;i ++)
	{
		scanf("%d",a + i);
	}
	
	get_date(a);//获取第几天,并打印结果 
		
	return 0;
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值