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