这一天是这一年的第几天?
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; //返回结果
}