代码: 全选
#include<stdio.h>
int CountDate(int month,int day);//日期的计算函数
int leap(int year);//闰年计算函数
int main()
{
int Fyear,Fmonth,Fday,Byear,Bmonth,Bday;//定义的年月日。F开头 的是起始日期。B开头的是结束日期
int flag=1;//定义循环的标志
int Fdate,Bdate,result;//定义的结果变量Fdate,Bdate表示一年中过了多少天
do
{ flag++;
//如果输入出错。就会打印这个。
if(flag>2)
{
printf("your date has error!");
}
printf("please input Start date(format is Year,Month,Day):\n");
scanf("%d,%d,%d",&Fyear,&Fmonth,&Fday);
printf("please intput Finally date(fomat is Year,Month,Day):\n");
scanf("%d,%d,%d",&Byear,&Bmonth,&Bday);
flag++;
}while((Fyear>Byear)||(Fyear==Byear&&Fmonth>Bmonth)||(Fyear==Byear&&Fmonth==Bmonth&&Fday>Bday));//这些都是出错的条件。起始日期必须小于结束日期
Fdate=CountDate(Fmonth,Fday);//计算一年中过了多少天
if(leap(Fyear)&&Fmonth>=3)//如果是闰年。就+1
Fdate=Fdate+1;
Bdate=CountDate(Bmonth,Bday);//计算一年中过了多少天
if(leap(Byear)&&Bmonth>=3)
Bdate=Bdate+1;//如果是闰年。就+1
if(Fyear!=Byear)
{result=365*(Byear-Fyear)-Fdate+leap(Fyear)+Bdate;}//这个的意思比较难说。如果Fyear不等于Byear,365*结束年数与起始年数的差等于一个总天数。再减去起始日期过了多少天+是否为闰年+结束日期过了多少天。-_-!!!(各位到底看懂没有。。。。)
else
{
result=Bdate-Fdate;//这个就是如果起始年数等于结束年数。那么就直接用结束的日期过的天数减去起始日期过的天数。
}
printf("OK!\n");
printf("-----------------------------------------\n");
printf("| |\n");
printf("| the sum is %d day |\n",result);
printf("| |\n");
printf("-----------------------------------------\n");
return 0;
}
//计算这一年中这个日期过了多少天
int CountDate(int month,int day)
{
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for(i=1;i<month;i++)
day+=day_tab[i];
return(day);
}
//闰年的计算 函数。是闰年返值为1。
int leap(int year)
{
int leap;
leap=year%4==0&&year%100!=0||year%400==0;
return leap;
}
[/code]
我现在想。如果我能再加上一个功能。就是给个日期然后写个数。然后推算出以后的日期就好了。向前和向后两种。各位高手们看这个怎么实现。或者能把我这个程序改进一下也行。。。。。。。