C语言,一年中的第几天0
#includestruct Date
{
int year;
int month;
int day;
};
typedef struct Date Date;int checkinput(Date date);//检查输入是否有错
int days(Date date);//统计天数
int leap(Date date);//判断是不是闰年int main()
{
Date date;
int totalday; printf("请输入日期,年 月 日\n");
scanf("%d %d %d",&date.year,&date.month,&date.day); if(checkinput(date))
{
totalday=days(date);
printf("%d年%d月%d日是该年的第%d天\n",date.year,date.month,date.day,totalday);
}
else
{
printf("请退出\n");
} return 0;
}int checkinput(Date date)
{
int flag=1;
int leap1;
leap1=leap(date);
if(date.month>12)
{
printf("不存在的月份\n");
flag=0;
}
if((date.month==1||date.month==3||date.month==5||date.month==7||date.month==8||date.month==10||date.month==12)&&date.day>31)
{
printf("天数过大\n");
flag=0;
}
if((date.month==4||date.month==6||date.month==9||date.month==11)&&date.day>30)
{
printf("天数过大\n");
flag=0;
}
if(leap1==1&&date.month==2&&date.day>29)
{
printf("天数过大\n");
flag=0;
}
if (leap1==0&&date.month==2&&date.day>28)
{
printf("天数过大\n");
flag=0;
}
return flag;
}int leap(Date date)
{
int leap=0;
if((date.year%4==0&&date.year%100!=0)||date.year%400==0)
leap=1;
return leap;
}int days(Date date)
{
int monthdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int total=0;
int i; if(leap(date)==1)
monthdays[1]=29;
for(i=date.month-2;i>=0;i++)
total+=monthdays[i];
total+=date.day;
return total;
}2月及其以后的月份出错!!!!求救