【C语言】计算日期差

  • Post author:
  • Post category:其他


【问题描述】

结构

struct Date {


int year;

int month;

int day;

};

利用该结构编写一个程序用来计算两个日期之间相差的天数。

【输入形式】

输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。

【输出形式】

第二个日期与第一个日期间相差的天数。

【输入样例】

2003 3 25
2003 3 29

【输出样例】

4

#include <stdio.h>
const int s[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
struct Date
{
   int year;
   int month;
   int day;
}a,b;
int count(const struct Date *p) //计算这年过了多少天
{
	int i,t = 0;
	if(p->year%100 != 0 && p->year%4 == 0 || p->year%400 == 0)
		for(i = 1;i < p->month;i++)	t += s[1][i];
	else	for(i = 1;i < p->month;i++)	t += s[0][i];
	return t + p->day;
}
int main()
{
	int ans = 0,i;
	scanf("%d %d %d",&a.year,&a.month,&a.day);
	scanf("%d %d %d",&b.year,&b.month,&b.day);
	for(i = a.year;i < b.year;i++)
	{
		if(i%100 != 0 && i%4 == 0 || i%400 == 0)	ans += 366;
		else	ans += 365;
	}
	ans += count(&b) - count(&a);
	printf("%d",ans);
	return 0;
}



版权声明:本文为qq_27516161原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。