主要在于区分2月,闰年2月有29天,非闰年有28天
法一:数组+循环
int is_leap_year(int year){
return (((year%4==0)&&(year%100!=0))||(year%400==0));
}
int main() {
int year=0;
int month=0;
int day=0;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
while(scanf("%d %d",&year,&month)==2) {
day=days[month];
if((is_leap_year(year))==1&&month==2){
day++;
}
printf("%d\n",day);
}
return 0;
}
法二:循环+switch判断语句,其中default语句是对月份输入错误的判断
int main() {
int year=0;
int month=0;
while(scanf("%d %d",&year,&month)==2) {
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("30\n");
break;
case 2:
if(((year%4==0)&&(year%100!=0))||(year%400==0))
printf("29\n");
else
printf("28\n");
break;
default:
printf("输入错误\n");
}
}
return 0;
}
运行结果:(运行循环+switch判断语句这个代码)