最大的问题就是第一次for循环的时候用的是出生的年份->i,在第二次循环的时候,i已经变成了当前的年份->a。
还有小问题,就是给年份的天数赋值的时候,没有考虑出生日期是否过了2月,过了2月就应该赋值下一年的天数。闰年判断也不太对。#include <stdio.h>
/*先考虑从出生到当前日期经过几年,将这几年天数加起来。
然后再算出生那年剩多少天结束,以及当前日期是当前年份过了多少天,相加即得活过总天数*/
int main()
{
int i, j, k, n;
int a, b, c;
int year, month, day;
long int sum_years = 0, sum_months = 0;
printf("请输入你的生日(如1988-05-20):");
scanf("%d-%d-%d", &year, &month, &day);
printf("请输入今天日期(如2016-03-28):");
scanf("%d-%d-%d", &a, &b, &c);
n=a-year;
int num_years[n], flag=year;
if (month>2)flag+=1;
for( i=0; i < n; ++i){ //i到a间隔几年
if((flag+i)%100!=0&&(flag+i)%4==0||(flag+i)%400==0 ){ //闰年将366天储存在数组中
num_years[i] = 366;
}
else{
num_years[i] = 365; //不是闰年将365天储存在数组中
}
}
for( i=0; i < n ; i++)
sum_years = sum_years + num_years[i]; //将数组中数求和
printf("%ld", sum_years);
}
|