怎么用c语言写一个程序是 算出自己从出生到现在活

如题所述

你是不是想说从你出身到现在活了多少天么?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define LEAP_YEAR 366
#define COMMON_YEAR 365

int days[]={31,28,31,30,31,30,31,31,30,31,30,31};

struct date
{
int year;
int month;
int day;
}birthday,today;

typedef struct date DATE;

void interval_days()
{
int i,result,sum1,sum2;
printf("请输入你的出生日期: ");
scanf("%d-%d-%d",&birthday.year,&birthday.month,&birthday.day);
if(birthday.year<=0 || birthday.month<=0 || birthday.month>12 || birthday.day<=0 || birthday.day>31)
{
printf("输入错误,请准确输入日期!\n");
exit(-1);
}
printf("请输入今天的日期: ");
scanf("%d-%d-%d",&today.year,&today.month,&today.day);
if(today.year<0 || today.month<0 || today.month>12 || today.day<0 || today.day>31)
{
printf("输入错误,请准确输入日期!\n");
exit(-1);
}
//算法思路:我们以公元1年1月1日为基准,分别计算间隔天数,然后两者相减就是这两个日期的间隔天数了
sum1=sum_days(&birthday);
sum2=sum_days(&today);
result=abs(sum1-sum2);
printf("从你出生到现在,你已经活了多少天: %d 天\n",result);
}

int sum_days(DATE *date)
{
int i,sum;
//计算公元1年1月1日到某年的1月1号的天数
for(i=1,sum=0;i<date->year;i++){
if(i%400==0 || (i%4==0 && i%100!=0))
sum+=LEAP_YEAR;
else
sum+=COMMON_YEAR;
}
//计算该年的1月1号到该日期的天数
for(i=0;i<date->month-1;i++){
sum+=days[i];
}
if(date->month>2 && (date->year%400==0 || (date->year%4==0 && date->year%100!=0)))
sum+=date->day+1;
else
sum+=date->day;
return sum;
}

int main()
{
interval_days();
return 0;
}

示例运行结果:

温馨提示:答案为网友推荐,仅供参考
相似回答