编写一个程序输入一个人出生年月日和当前日期,计算出他的年龄和距离下一生日的的天数

是关于C语言学习的

用万年历算法, y, m, d 分别表示年月日

int getDay ( int y, int m, int d )
{
static int dm [] = { 333, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 303 };
y += (m-1)/12;
m %=12;
// 计算闰年
if ( !(y%400) ) r = 1; else if ( !(y%100) ) r = 0; else if ( !(y%4) ) r = 1; else r = 0;
if ( r && (1 != m) && (2 != m) ) d ++; // 处理闰年二月后日期
y --;

return (y*365 + dm [ m ] + d + y/4 - y/100 + y/400);
}

int yCalc ( int y, int m, int d, int y0, int m0, int d0 ) // 年龄
{
return ( getDay (y, m, d) - getDay (y0, m0, d0) ) / 365;
}

int dCalc ( int y, int m, int d, int y0, int m0, int d0 ) // 天数
{
int d1, d2;
d1 = getDay ( y, m0, d0 ); // 今年生日
d2 = getDay ( y, m, d ); // 今天
if (d1<d2) d1 = getDay ( y+1, m0, d0 ) // 今年生日过去了, 算明年生日
return d1 - d2;
}
温馨提示:答案为网友推荐,仅供参考
相似回答