c语言 算日期,C语言 · 日期计算

#include

#include

/*判断闰年函数:四年一闰,百年不闰,四百年再闰.*/

bool leap(int year){

if(year%== && year%!=)

return true;

if(year%==)

return true;

return false;

}

/*年份带来的天数差*/

getDay1(int year){

int sum=;//记录年份带来的天数差

if(year<=){

for(int i=year;i

if(leap(i))

sum+=;

else

sum+=;

}

}

if(year>){

for(int i=;i

if(leap(i))

sum+=;

else

sum+=;

}

}

return sum;

}

/*月份带来的天数差*/

int getDay2(int year,int mon,int day){

int sum=;//记录月份带来的天数差

for(int i=;i

if(i== || i== || i== || i== || i== || i== || i==){

sum+=;

}

if(i== || i== || i== || i==){

sum+=;

}

if(i== && leap(year)){

sum+=;

}

if(i== && !leap(year)){

sum+=;

}

}

sum = sum + day;

return sum-;//加到基准天数时其实多加了1

}

/*

在得出天数之后,还要分情况,首先将得到的天数差day%7,得到星期差;

(1)如果给出的年份小于等于基础年份,那么应该从基础时间(星期六)

向负方向数day%7天,注意1之后要变成7;

(2)如果给出的年份大于基础年份,那么应该从基础时间(星期六)

向正方向数day%7天,注意7之后要变成1.

注:abs():取绝对值函数。

*/

int main(){

int year,month,day;

scanf("%d%d%d",&year,&month,&day);

int sum=getDay1(year);//得到年份带来的天数差

if(year

sum = sum-getDay2(year,month,day);

int ans = sum%;

printf("%d",ans==?:abs(-ans));

}else{

sum = sum+getDay2(year,month,day);

int ans = sum%;

printf("%d",(+ans)> ? ((+ans)%) : (+ans));

}

return ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值