结构体01(C)

设计一个表示日期的结构体。编写一个函数,计算两个日期之间相差多少天。在 main 函数中调用该函数,并显示结果
 

/*========================================================================================================
*学号:1527403059
*作业:E71
*功能:设计一个表示日期的结构体。编写一个函数,计算两个日期之间相差多少天。在main函数中调用该函数并显示结果
*作者:陆胤任
*日期:2016.1.1
*=========================================================================================================*/
#include<stdio.h>
#include<math.h>

/*type definr*/ 
struct Date                                                                //声明一个结构体类型struct Date
{
	int year;
	int month;
	int day;
}date1,date2;                                                              //定义两个结构体变量data1,data2                                                        
 
/*function define
*@brief:计算两个日期相差多少天
*@param:int num:保存两个日期相差多少天
        int temp:用于交换两数
*@reval:int num:日期相差天数
*/
int count_date1_date2(struct Date date1,struct Date date2)                //定义count_date1_date2(struct Date date1,struct Date date2)函数计算两个日期相差几天
{
	int num;
	int i,y,m,n,temp;
	int ext=0;
	int sum_1=0,sum_2=0,sum_3=0;
	int a[12]={31,28.31,30,31,30,31,31,30,31,30,31};
	y=date1.year-date2.year;
	m=date1.year;
	n=date2.year;
	if(m<n)
	{
		temp=m;
		m=n;
		n=temp;
	}
	for(i=n;i<m;i++)                                                       //ext为两个年份之间闰年的年数
	{
		if(i%4==0&&i%100!=0||i%400==0)
		{
			ext++;
		}
	}
		if(date1.year%4==0&&date1.year%100!=0||date1.year%400==0)         //如果是闰年,则2月有29天
		{
			a[1]+=1;
		}
		for(i=0;i<date1.month-1;i++)
		{
			sum_1+=a[i];
		}
		sum_1+=date1.day;
		a[1]=28;
		if(date2.year%4==0&&date2.year%100!=0||date2.year%400==0)
		{
			a[1]+=1;
		}
		for(i=0;i<date2.month-1;i++)
		{
			sum_2+=a[i];
		}
		sum_2+=date2.day;
		num=y*365+sum_1-sum_2+ext;                                            //相隔的总天数
		return abs(num);                                                      //返回值为num的绝对值
}

int main()
{
	int a;
	printf("请输入第一个日期:\n");
	scanf("%d%d%d",&date1.year,&date1.month,&date1.day);                    //输入第一个日期
	printf("请输入第二个日期:\n");
	scanf("%d%d%d",&date2.year,&date2.month,&date2.day);                    //输入第二个日期
	a=count_date1_date2(date1,date2);
	printf("输入的两个日期相差%d天\n",a);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/ukco_well/article/details/82193741