#include <stdio.h>
int isLeapYear(int);
int main() {
int a,b,c,i,days_of_year=0;
printf("请输入年月日,以空格隔开:");
scanf("%d%d%d",&a,&b,&c);
while((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&(c<1||c>31)
||(b>12||b<1)
||(b==4||b==6||b==9||b==11)&&(c<1||c>30)
||(b==2&&isLeapYear(a)==1&&(c<1||c>29))
||(b==2&&isLeapYear(a)==0&&(c<1||c>28)))//判断输入的月份以及对应的日期是否正确,不正确则重新输入,例如平年输入2月29日会要求重新输入
{
printf("输入错误,请重新输入年月日:");
scanf("%d%d%d",&a,&b,&c);
}
int days_of_month[13]={0,31,isLeapYear(a)==1?29:28,31,30,31,30,31,31,30,31,30,31};
for(i=0;i<b;i++){//因为for循环会先执行一次,当输入1月的时候也会先执行一次,所以数组前面添加一个0
days_of_year+=days_of_month[i];
}
days_of_year+=c;
printf("%d年%d月%d日是该年的第%d天",a,b,c,days_of_year);
return 0;
}
int isLeapYear(int year){//判断是否是闰年
if(year%4==0){
if(year%100==0&&year%400!=0){
return 0;
}else{
return 1;
}
}
return 0;
}
输入年月日判断是该年的第几天
最新推荐文章于 2023-11-05 19:26:42 发布