人数短暂,时光如梭,绝大多数人活不到4万天,珍惜活着的每一天,不负韶华。请编程实现输入生日以及当前日期计算已活的天数。
思路:
我会分为三个阶段考虑分析问题:第一个阶段出生的年月日到出生时,这一年的年底12月31日为界线计算出已活天数。第二个阶段是当前日期的年月日这一年的年初1月1日到当前日期的年月日,计算出已活天数。第三个阶段是除掉出生这一年和当前日期这一年,来计算中间年的天数。最后求和即可!
#include<stdio.h>
int main()
{
int i,j,k,x;//x表示中间年
int arr1[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int arr2[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int arr3[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int year1,month1,day1;//输入出生的年月日
int year2,month2,day2;//输入当前的年月日
int sum1=0,sum2=0,sum3=0,sum;
printf("请输入您出生日期:");
scanf("%d %d %d",&year1,&month1,&day1);
if((year1%4==0&&year1%100!=0)||year1%400==0)
{
arr1[2]=29;
}
else
{
arr1[2]=28;
}
for(i=12;i>month1;i--)
{
sum1=sum1+arr1[i];
}
sum1=sum1+arr1[month1]-day1;//出生时这一年活的天数
printf("请输入当前日期:");
scanf("%d %d %d",&year2,&month2,&day2);
if((year2%4==0&&year2%100!=0)||year2%400==0)
{
arr2[2]=29;
}
else
{
arr2[2]=28;
}
for(j=1;j<month2;j++)
{
sum2=sum2+arr2[j];
}
sum2=sum2+day2;//当前日期这一年活的天数
sum3=0;
for(x=year1+1;x<year2;x++)
{
if((x%4==0&&x%100!=0)||x%400==0)
{
arr3[2]=29;
}
else
{
arr3[2]=28;
}
for(k=1;k<13;k++)
{
sum3=sum3+arr3[k];//出掉出生这一年和当前这一年,中间这几年的天数和
}
}
sum=sum1+sum2+sum3;
printf("您已经活了%d天",sum);
return 0;
}
输入
2002 5 30
2024 4 27
输出
您已经活了8003天