文章

10

粉丝

0

获赞

37

访问

662

头像
日期差值 C语言题解:逐月累加
P1290 上海交通大学/西北工业大学机试题
发布于2026年3月10日 19:37
阅读数 65

累加月份

#include<stdio.h>

typedef struct ymd{
	int year, month, day;
}ymd;

void ji(ymd *n, char ymd1[]){
	n->year=(ymd1[0]-'0')*1000+(ymd1[1]-'0')*100+(ymd1[2]-'0')*10+(ymd1[3]-'0');
	n->month=(ymd1[4]-'0')*10+(ymd1[5]-'0');
	n->day=(ymd1[6]-'0')*10+(ymd1[7]-'0');
}

int run(int n){
	if((n%4==0 && n%100!=0) || (n%400==0))
		return 1;
	return 0;
}

int main(){
	char ymd1[9], ymd2[9];
	while(~scanf("%s %s",ymd1,ymd2)){
		ymd n1, n2;
		ji(&n1,ymd1);
		ji(&n2,ymd2);
		
		int ny=n1.year;
		int nm=n1.month;
		int sum=0;
		int data[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
		while(ny<n2.year || nm<n2.month){
			if(nm==13){
				nm=1;
				ny++;
			}
			sum+=data[nm];
			if(nm==2 && run(ny))
				sum++;
			nm++;
		}
		sum-=n1.day;
		sum+=n2.day+1;
		printf("%d\n", sum);
		
	}
	
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发