计算活多少天夏涛

物联网203夏涛 发表于2020年11月18日
#include &lt;stdio.h&gt;<br >#include &lt;stdlib.h&gt;<br >#include &lt;math.h&gt;<br >&nbsp;<br >#define LEAP_YEAR 366<br >#define COMMON_YEAR 365<br >&nbsp;<br >int days[]={31,28,31,30,31,30,31,31,30,31,30,31};<br >&nbsp;<br >struct date<br >{<br >&nbsp;&nbsp;&nbsp; int year;<br >&nbsp;&nbsp;&nbsp; int month;<br >&nbsp;&nbsp;&nbsp; int day;<br >}birthday,today;<br >&nbsp;<br >typedef struct date DATE;<br >&nbsp;<br >void interval_days()<br >{<br >&nbsp;&nbsp; &nbsp;int sum_days(DATE *date);<br >&nbsp;&nbsp;&nbsp; int i,result,sum1,sum2;<br >&nbsp;&nbsp;&nbsp; printf(&quot;请输入你的出生日期: &quot;);<br >&nbsp;&nbsp;&nbsp; scanf(&quot;%d-%d-%d&quot;,&amp;birthday.year,&amp;birthday.month,&amp;birthday.day);<br >&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if(birthday.year&lt;=0 || birthday.month&lt;=0 || birthday.month&gt;12 || birthday.day&lt;=0 || birthday.day&gt;31)<br >&nbsp;&nbsp;&nbsp; {<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br >&nbsp;&nbsp;&nbsp; }<br >&nbsp;&nbsp;&nbsp; printf(&quot;请输入今天的日期: &quot;);<br >&nbsp;&nbsp;&nbsp; scanf(&quot;%d-%d-%d&quot;,&amp;today.year,&amp;today.month,&amp;today.day);<br >&nbsp;&nbsp;&nbsp; if(today.year&lt;0 || today.month&lt;0 || today.month&gt;12 || today.day&lt;0 || today.day&gt;31)<br >&nbsp;&nbsp;&nbsp; {<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;输入错误,请准确输入日期!\n&quot;);<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);<br >&nbsp;&nbsp;&nbsp; }<br >&nbsp;&nbsp;&nbsp; sum1=sum_days(&amp;birthday);<br >&nbsp;&nbsp;&nbsp; sum2=sum_days(&amp;today);<br >&nbsp;&nbsp;&nbsp; result=abs(sum1-sum2);<br >&nbsp;&nbsp;&nbsp; printf(&quot;从你出生到现在,你已经活了多少天: %d 天\n&quot;,result);<br >}<br >&nbsp;<br >int sum_days(DATE *date)<br >{<br >&nbsp;&nbsp;&nbsp; int i,sum;<br >&nbsp;&nbsp;&nbsp; //计算公元1年1月1日到某年的1月1号的天数<br >&nbsp;&nbsp;&nbsp; for(i=1,sum=0;i&lt;date-&gt;year;i++){<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i%400==0 || (i%4==0 &amp;&amp; i%100!=0))<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum+=LEAP_YEAR;<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum+=COMMON_YEAR;<br >&nbsp;&nbsp;&nbsp; }<br >&nbsp;&nbsp;&nbsp; //计算该年的1月1号到该日期的天数<br >&nbsp;&nbsp;&nbsp; for(i=0;i&lt;date-&gt;month-1;i++){<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum+=days[i];<br >&nbsp;&nbsp;&nbsp; }<br >&nbsp;&nbsp;&nbsp; if(date-&gt;month&gt;2 &amp;&amp; (date-&gt;year%400==0 || (date-&gt;year%4==0 &amp;&amp; date-&gt;year%100!=0)))<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum+=date-&gt;day+1;<br >&nbsp;&nbsp;&nbsp; else<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum+=date-&gt;day;<br >&nbsp;&nbsp;&nbsp; return sum;<br >}<br >&nbsp;<br >int main()<br >{<br >&nbsp;&nbsp;&nbsp; interval_days();<br >&nbsp;&nbsp;&nbsp; return 0;<br >}