统计出生天数

#include<stdio.h>

int birthdays();//计算从出生日到现在的总天数
int sum();//计算某一年到某一年的总天数
int count();//计算闰年与非闰年某一天为该年第几天
int	number();//计算第n月m天为该年第几天的函数
int door=0;


int main()
{
	int Year1;
	int Month1;
	int Date1;
	int Year2;
	int Month2;
	int Date2;
	int Days=0;

	printf("请输入您的出生日期:year-math-day\n");
	scanf("%d-%d-%d",&Year1,&Month1,&Date1);
	printf("请输入您当前的日期:\nyear-math-day\n");
	scanf("%d-%d-%d",&Year2,&Month2,&Date2);
	Days=birthdays(Year1,Year2,Month1,Month2,Date1,Date2);
	if(door=0)
	{
		printf("今天是你出生后的第%d天",Days);
	}
	else if (door=1)
	{
		printf("输入的信息有误!");
	}
	
}


int birthdays(int Year1,int Year2,int Month1,int Month2,int Date1,int Date2)
{
	int Sumdays=0;

	if(Year1<Year2)
	{
		Sumdays=sum(Year1,Year2)+count(Year2,Month2,Date2)-count(Year1,Month1,Date1);
	
	}
	else if(Year1>Year2)
	{
		door=1;
	}
	return Sumdays;
}



int sum(int Year1,int Year2)
{
	int n,Days=0;


	for(n=Year1;n<Year2;n++)
	{
		if (((n%100!=0) && (n%4==0)) || (n%400==0))
		{
			Days+=366;
		}
		else
		{
			Days+=365;
		}
	}
	return Days;
}


int count(int Year,int Month,int Date)
{
	int Days=0;
	int flg;

	if ((Year%100!=0) && (Year%4==0) || (Year%400==0))
	{
		flg=1;
		if (2==Month&&Date>29)
		{
			door=1;
		}
 		Days+=number(Month,Date,flg);			
	}

	else
	{	
		if (2==Month&&Date>28)
		{
			door=1;
		}
		flg=2;
		Days+=number(Month,Date,flg);
	}

	return Days;
}



int number(int Month,int Date,int flg)
{
	int Days=0;
	int i=Month;

	if (i==1)
	{
		Days=Days+Date;
	}
	else if(i>1)
	{
		for(i=1;i<Month;i++)
		{
			if (1==i||3==i||5==i||7==i||8==i||10==i||12==i)
			{
				if(Date>31)
				{
					door=1;
				}
				Days+=31;
			}

			else if (4==i||6==i||9==i||11==i)
			{
				if(Date>30)
				{
					door=1;
				}
				Days+=30;
			}

			if(2==i)
			{
			
				if (1==flg)//通过标志位来辨别是否闰年
					{
						Days+=29;
					}

				if(2==flg)
					{
						Days+=28;
					}
			}
			
		}
		Days+=Date;
	}
return Days;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值