文章

1

粉丝

0

获赞

0

访问

17

头像
日期差值 题解:
P1290 上海交通大学/西北工业大学2019机试
发布于2025年3月12日 15:37
阅读数 17

#include<stdio.h>
const int x[12]={31,28,31,30,31,30,31,31,30,31,30,31};
const int y[12]={31,29,31,30,31,30,31,31,30,31,30,31};

typedef struct time{//时间结构体 
	int y,m,d;
}time;

int IsR(int y){//判断是否是闰年 
	if(y%4==0&&y%100!=0)
		return 1;
	else if(y%400==0)
		return 1;
	else
		return 0;
}

int IsValue(time a){//判断是否合法 
	if(a.m<1||a.m>12||a.d<1)
		return 0;
	else if(IsR(a.y)&&a.d>y[a.m-1])
		return 0;
	else if(!IsR(a.y)&&a.d>x[a.m-1])
		return 0;
	else 
		return 1;
}

int SumD(time a){//计算该日期在当年的第几天,返回所在年份的第几天 
	int sum=0;
	if(IsR(a.y)){
		for(int i=1;i<a.m;i++){
			sum+=y[i-1];
		}
	}
	else{
		for(int i=1;i<a.m;i++){
			sum+=x[i-1];
		}
	}
	sum+=a.d;
	return sum;
}

int Cha(time a,time b){//计算差值,b一定大于a
	int sum=0,i;
	if(a.y==b.y)return SumD(b)-SumD(a);
	for(i=b.y;i>a.y;i--){
		sum+=IsR(i)?366:365;
	}
	sum=sum-SumD(a)+SumD(b);
	return sum;
}

int main(){
	time a[2];
	int n,m...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发