struct date datediff(struct date val1, struct date val2);
=struct date
{
int year;
int month;
int day;
};
int uru(int year)
{
if (((year % 4) == 0 && (year % 100) != 0) || ((year % 400) == 0))
return 1;
return 0;
}
int sum(date *val)
{
int d[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31,0 };
int i, u, m, y;
y = val->year;
m = val->month;
u = val->day;
for (i = 0; i<m; ++i)
{
u += d[i];
if (i == 2)
{
u += uru(y);
}
}
return u;
}
int datediff(struct date *val1, struct date *val2)
{
int i, k, y1, y2;
y1 = val1->year;
y2 = val2->year;
k = 0;
for (i = y2; i<y1; ++i)
{
k += 365;
k += uru(i);
}
k = k + sum(val1) - sum(val2);
return k;
}
int main()
{
int k;
date t[2] = { { 2015,6,3 },{ 2010,5,2 } };
k = datediff(&t[0], &t[1]);
printf("%d日経過しました。\n", k);
return 0;
}
またプログラムはあっていますか?