思路:用两个数组存放每月的天数,可以进行日期的合法性判断,还有天数的计算
数组第一个元素存放0,方便一月的计算
//两个数组存放每个月的日期
#include<stdio.h>
int main() {
int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; //下标代表月份
int b[13]= {0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年
int year,month,day,i,k,count;
k=0;
scanf("%d%d%d",&year,&month,&day);
if((year%4==0&&year%100!=0)||year%400==0) k=1;
if(month>0&&month<13) {
if(k==0) {//非闰年
if(day>0&&day<=a[month]) {
count=day;
for(i=0; i<month; i++) {
count=count+a[i];
}
} else {
printf("错误日期");
return 0;
}
} else { //闰年
if(day>0&&day<=b[month]) {
count=day;
for(i=0; i<month; i++) {
count=count+b[i];
}
} else {
printf("错误日期");
return 0;
}
}
} else {
printf("错误日期");
return 0;
}
printf("%d年%d月%d日是第%d天",year,month,day,count);
return 0;
}