发布网友 发布时间:2022-04-27 07:51
共2个回答
热心网友 时间:2023-09-14 07:22
根据题目要求,输入年月用':'分割,注意我用的冒号是英文输入法。
月份对应天数用数组就可以(2月默认28天),通过判断闰年决定2月份是否加1。
下面代码:
#include<stdio.h>
int getMaxDay(int year,int month);//通过年月获取当月最大天数
int isLeapYear(int year);//判断是否是闰年,是返回1,否返回0
int main()
{
int year,month=0,n=13;
while(n--){//输入13次
month=0;
while(month<1 || month>12)//月数不在1~12范围,输入无效
scanf("%4d:%2d",&year,&month);
printf("%4d年%02d月有%d天\n",year,month,getMaxDay(year,month));
}
return 0;
}
int getMaxDay(int year,int month)//通过年月获取当月最大天数
{
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year) && month==2)
return days[month-1]+1;
return days[month-1];
}
int isLeapYear(int year)//判断是否是闰年,是返回1,否返回0
{
if((year%4==0 && year%100!=0)||(year%400==0))
return 1;
return 0;
}
热心网友 时间:2023-09-14 07:23
打码不容易,需要完整代码请采纳私信(包含思考题代码),谢谢