代码如下,最下面有用例示范:
#include <stdio.h>
#include <math.h>
int bigMonth[7]={1,3,5,7,8,10,12};
int smallMonth[4]={4,6,9,11};
int sumOfDays(int year1,int year2,int month1,int month2,int date1,int date2 )
{
int totalDays=0;
int dif_year,dif_month,dif_date;//difference between strating ana ending year/month/day
int startingDayOfYear,endingDayOfYear;//起始日期在当年是第多少天
dif_year=year2-year1;
dif_month=month2-month1;
dif_date=date2-date1;
switch(month1)
{
case(1):
startingDayOfYear=date1;break;
case(2):
startingDayOfYear=31+date1;break;
case(3):
startingDayOfYear=60+date1;break;
case(4):
startingDayOfYear=91+date1;break;
case(5):
startingDayOfYear=121+date1;break;
case(6):
startingDayOfYear=152+date1;break;
case(7):
startingDayOfYear=182+date1;break;
case(8):
startingDayOfYear=213+date1;break;
case(9):
startingDayOfYear=244+date1;break;
case(10):
startingDayOfYear=274+date1;break;
case(11):
startingDayOfYear=305+date1;break;
case(12):
startingDayOfYear=335+date1;break;
default:break;
}
if(month1>2 && year1%4!=0)
startingDayOfYear--;
switch(month2)
{
case(1):
endingDayOfYear=date2;break;
case(2):
endingDayOfYear=31+date2;break;
case(3):
endingDayOfYear=60+date2;break;
case(4):
endingDayOfYear=91+date2;break;
case(5):
endingDayOfYear=121+date2;break;
case(6):
endingDayOfYear=152+date2;break;
case(7):
endingDayOfYear=182+date2;break;
case(8):
endingDayOfYear=213+date2;break;
case(9):
endingDayOfYear=244+date2;break;
case(10):
endingDayOfYear=274+date2;break;
case(11):
endingDayOfYear=305+date1;break;
case(12):
endingDayOfYear=335+date2;break;
default:break;
}
if(month2>2 && year2%4!=0)
endingDayOfYear--;
totalDays=endingDayOfYear-startingDayOfYear+365*(year2-year1);
for(int i=year1;i<year2;i++)
{
if(i%4==0)
totalDays++;
}
return totalDays;
}
void main()
{
int year1,year2,month1,month2,date1,date2;
printf("请输入出生日期:\n");
scanf("%d %d %d",&year1,&month1,&date1);
printf("请输入当前日期:\n");
scanf("%d %d %d",&year2,&month2,&date2);
if(month2>month1 || (month2==month1 && date2>=date1))
{
printf("实际年龄为: %d\n",year2-year1);
printf("距离下一次生日还有 %d 天\n",sumOfDays(year2,year2+1,month2,month1,date2,date1));
}
else
{
printf("实际年龄为: %d\n",year2-year1-1);
printf("距离下一次生日还有 %d 天\n",sumOfDays(year2,year2,month2,month1,date2,date1));
}
}
追问非常感谢
学了不久,懂的不多