c语言按yyyy-mm-dd格式输入一个日期,如2004-10-31,判断这是这一年的第几天

如题所述

#include"stdio.h"
int main()
{
int leap(int y);
int year,month,day;
int sum=0,i,m[12]={31,0,31,30,31,30,31,31,30,31,30,31};
printf("Input a year-month-day:");
scanf ("%d-%d-%d",&year,&month,&day);
if (leap(year))
{m[1]=29;}
else
{m[1]=28;}
for (i=0;i<=(month-2);i++)
{sum+=m[i];}
sum+=day;
printf ("Total=%d\n",sum);
}
int leap(int y)
{
int leapyear=0;
if (y%4!=0)
leapyear=0;
else if (y%100!=0)
leapyear=1;
else if (y%400!=0)
leapyear=0;
else
leapyear=1;
return(leapyear);
}

//输入的时候 按 2004-10-31这样格式输入
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-07
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};

char s[11];
int ye,mo,day,i;
gets(s);
for(i=0;i<10;i++)
s[i]-=48;
ye=s[0]*1000+s[1]+100+s[2]*10+s[3];
mo=s[5]+10+s[6];
day=s[8]*10+s[8];
for(i=0;i<mo;i++)
day+=m[i];
if((ye%4==0&&(ye%400==0||ye%100!=0))mo>2)
day++;
第2个回答  2013-04-07
爱的vadbvadabd
相似回答