通过输入的年月日判断对应日期是今年的第几天,题目要求如下:
对于这个问题的求解实际上是非常简单。
求解思路如下:
- 判断该年是平年还是闰年
- 将所有月份的天数相加
- 将输入天数相加即可得到当前日期是该年的第几天
实现代码如下:
#include <stdio.h>
int isLeap(int year){
//判断是否为闰年,1表示为闰年,0表示平年
return (year % 4== 0 && year % 100 != 0)|| (year % 400 == 0);
}
int main(){
int months[13][2] = {{0,0},{31,31},{28,29},
{31,31},{30,30},{31,31},
{30,30},{31,31},{31,31},
{30,30},{31,31},{30,30},{31,31}};
int year,month,day,total;
while(scanf("%d%d%d",&year,&month,&day)!=EOF){
total = day;
int b = isLeap(year);
for(int i=0;i<month;i++){
total += months[i][b];
}
printf("%d\n",total);
}
return 0;
}
最终通过的结果: