Doy 年积日计算C语言实现

Doy即是day of year,一年中的第几天;

计算doy需区分平年与闰年:平年2月28天,闰年2月29天。

平年闰年的判断依据分为两种:

  1. 可以被400整除
  2. 可以被4整除,而不能被100整除

那么根据这两种判断依据可以用c语言编写小程序:

  • 方法1:先计算日数,再判断平闰年
#include<stdio.h>
int main()
{ 
	int sum[12]={0,31,59,90,120,151,181,212,243,273,304,334};
	int year,month,day,doy;		//申请变量,申请存放按月天数总和的数组 
	printf("请输入 年 月 日!");
	scanf("%d %d %d",&year,&month,&day);		//输入年 月 日 
  	doy = sum[month-1];
    doy = doy + day ;		//计算doy 
    if(year%4==0&&year%100!=0||year%400==0&&month>2)		//判断闰年平年,与月份是否大于2 
    doy++;					//月份大于二且为闰年,天数加 1 
    printf("doy = %d",doy);//输出 
    return 0;
}
  • 方法2: 判断平闰,计算日数
#include<stdio.h>
int main(void)
{
	
	int a[13] = {0,31,28,31,30,31,30,31,30,31,30,31,30},doy,i,year,month,day;      //申请一个数组,用于存储每个月的天数,将a[0]存入0以方便计算,申请年月日,day of year的存储空间 
	printf("请输入 年 月 日\n");
	scanf("%d",&year),scanf("%d",&month),scanf("%d",&day);		//键盘输入年 月 日 
	if(year%400==0||year%4==0&&year%100!=0)						//判断是否为闰年 
	a[2] = 29;													//闰年二月29天 
	for(i=0;i<month;i++)										//for循环计算day of year ,此时即可理解a[0]为什么是0 
	doy = doy + a[i];
	doy = doy + day;											// 加入天数即完成计算 
	printf("今天是%d的第%d天\n",year,doy);						//输出天数 
	return 0;
 } 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值