这个程序可以计算相同年份不同日期的相差天数,如果需要计算不同年份的日期相差天数,可以自己修改一下;
#include "stdio.h"
#include "math.h" //为abs()函数提供原型
void main()
{
int i;
int year,month,day; //三个整型变量用来接收输入的日期 格式为:年-月-日
int first,end; //first和end变量分别记录输入的第一个日期和第二个日期 是该年的第几天
int day_of_year(int year,int month,int day); //函数调用声明
printf("请输入第一个日期,输入格式为:xxxx-xx-xx(年-月-日),‘-’符要求用户自己输入\n");
while((scanf("%d-%d-%d",&year,&month,&day)!=3)||(month<1||month>12))
printf("输入错误,请按照xxxx-xx-xx(年-月-日)格式输入,‘-’符要求用户自己输入,月份在1~12之间:\n");
first=day_of_year(year,month,day);
printf("请输入第二个日期,输入格式为:xxxx-xx-xx(年-月-日),‘-’符要求用户自己输入\n");
while((scanf("%d-%d-%d",&year,&month,&day)!=3)||(month<1||month>12))
printf("输入错误,请按照xxxx-xx-xx(年-月-日)格式输入,‘-’符要求用户自己输入,月份在1~12之间:\n");
end=day_of_year(year,month,day);
printf("两个日期之间相差 %d 天\n",abs(end-first));
}
int day_of_year(int year,int month,int day) //该函数计算输入的日期是该年的第几天
{
int total=0;
switch(month)
{
case 1:total=day;break;
case 2:total=31+day;break;
case 3:total=59+day;break;
case 4:total=90+day;break;
case 5:total=120+day;break;
case 6:total=151+day;break;
case 7:total=181+day;break;
case 8:total=212+day;break;
case 9:total=243+day;break;
case 10:total=273+day;break;
case 11:total=304+day;break;
case 12:total=334+day;break;
}
return total;
}