编程计算两个日期之间的天数
#include<stdio.h>#defineLEAP(y)(y%4==0&&y%100||y%400==0)/*公元y年是否闰年*/longtotaldays(int...
#include<stdio.h>
#define LEAP(y) (y%4==0&&y%100||y%400==0) /*公元y年是否闰年*/
long totaldays(int year,int month,int day)/*公元纪年的总天数*/
{ int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int c=day,m,y=year-1;
days[2]=28+LEAP(year);
for(m=1;m<month;m++)c+=days[m];
return c+y/4-y/100+y/400+y*365L;
}
void main()
{ int y,m,d; long t1,t2;
printf("date 1: ");
scanf("%d%*c%d%*c%d",&y,&m,&d);
t1=totaldays(y,m,d);
printf("date 2: ");
scanf("%d%*c%d%*c%d",&y,&m,&d);
t2=totaldays(y,m,d);
printf("total days: %ld\n",t2-t1);
}
想请各位解释一下这段代码,函数totaldays的计算方法没看懂~ 展开
#define LEAP(y) (y%4==0&&y%100||y%400==0) /*公元y年是否闰年*/
long totaldays(int year,int month,int day)/*公元纪年的总天数*/
{ int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int c=day,m,y=year-1;
days[2]=28+LEAP(year);
for(m=1;m<month;m++)c+=days[m];
return c+y/4-y/100+y/400+y*365L;
}
void main()
{ int y,m,d; long t1,t2;
printf("date 1: ");
scanf("%d%*c%d%*c%d",&y,&m,&d);
t1=totaldays(y,m,d);
printf("date 2: ");
scanf("%d%*c%d%*c%d",&y,&m,&d);
t2=totaldays(y,m,d);
printf("total days: %ld\n",t2-t1);
}
想请各位解释一下这段代码,函数totaldays的计算方法没看懂~ 展开
展开全部
主函数的功能是输入2个日期,然后求2个日期之间的总天数。
totoaldays的函数就是求从公元0年开始到输入日期之间的总天数。
long totaldays(int year,int month,int day)/*公元纪年的总天数*/
{ int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int c=day,m,y=year-1;
days[2]=28+LEAP(year); //确定今年2月的天数
for(m=1;m<month;m++)c+=days[m]; //确定今年的天数
return c+y/4-y/100+y/400+y*365L; //计算方法是先计算假如全部年份都是平年的天数即y*365L,然后加c,c是year那一年的天数,再加上闰年出现的次数。
}
totoaldays的函数就是求从公元0年开始到输入日期之间的总天数。
long totaldays(int year,int month,int day)/*公元纪年的总天数*/
{ int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int c=day,m,y=year-1;
days[2]=28+LEAP(year); //确定今年2月的天数
for(m=1;m<month;m++)c+=days[m]; //确定今年的天数
return c+y/4-y/100+y/400+y*365L; //计算方法是先计算假如全部年份都是平年的天数即y*365L,然后加c,c是year那一年的天数,再加上闰年出现的次数。
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询