这一天是这一年的第几天?

pta上我们经常看到有关天数转换的问题,下面有一题:输入年月日,判断这一天是该年的第几天?

我们使用数组解决这个问题:

#include<stdio.h>
int day_of_year(int year, int month, int day);    
int main() {
int year, day, month;
int result;
scanf("%d%d%d", &year, &month, &day);           //主函数,输入年月日
result = day_of_year(year, month, day);          //调用函数,判断是第几天
printf("这天是这一年的第%d天", result);
return 0;
}

int day_of_year(int year, int month, int day) {
int a[2][13] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31},          //0的出现是为了将月份往后推一格,使得读出的月份与数组下标的月份相对应
{0,31,29,31,30,31,30,31,31,30,31,30,31}          //第一行放的是非闰年的月数,第二行放的是闰年的月数
};
int k, leap,sum=0;
leap = year % 4 == 0 && year % 100 != 0 && year % 400 == 0;    //leap的出现,不仅仅可以判断是否为闰年,还对应二维数组行的下标
for (k = 1; k < month; k++) {                                    //小于对于的月份,加上对于月份的天数,在最后加上最后月份的天数
sum = sum + a[leap][k] + day;
}return sum;                                //返回结果
}

posted @ 2021-11-08 11:15  周轩  阅读(93)  评论(0编辑  收藏  举报