c语言某年某月某日的天数,输入某年某月某日,判断这一天是这一年的第几天…

  • Post author:
  • Post category:其他


看看:

#include

/* year是否为闰年 */

int leapyear(int year)

{

if( (year%4==0 && year%100!=0) || year%400==0 )

return 1;

else

return 0;

}

/* 求某年某月某日是该年的第几天 */

int dayindex(int year,int month,int day)

{

int days=0,d;

int i;

for(i=1;i

{

switch(i)

{

case 1:case 3:case 5:case 7:case 8:case 10:case 12:

d=31;break;

case 4:case 6:case 9:case 11:

d=30;break;

case 2:

if(leapyear(year))

d=29;

else

d=28;

break;

}

days+=d;

}

days+=day;

return days;

}

int main( )

{

int T,k;

int year,month,day;

int i;

int daysum;

int flag;

scanf(“%d”,&T);

for(k=0;k

{

/* 输入年,月,日 */

scanf(“%d-%d-%d”,&year,&month,&day);

/* 看看你有没有18岁的生日:只有出生在闰年2月29日并且过18年后不是闰年*/

flag=1;

if( leapyear(year)==1 && month==2 && day==29 && leapyear(year+18)==0 )

flag=0;

else

{

/* 求该年后第一年至18岁生日前以前所经历的天数 */

daysum=0;

for(i=year+1;i

{

daysum+=365;

if(leapyear(i))

daysum++;

}

/* 总的天数要加上出生那年所剩天数和18岁那年多活的天数 */

if(leapyear(year))

daysum+=(366-dayindex(year,month,day));

else

daysum+=(365-dayindex(year,month,day));

daysum+=dayindex(year+18,month,day);

}

if(flag)

{

/* 输出到18岁生日那天你所经历的天数,好好珍惜时间哦 */

printf(“%d\n”,daysum);

}

else

printf(“-1\n”);

}

return 0;

}