输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
#pragma warning(disable:4996) //vs设置
#include<stdio.h>
#include<math.h> //没用可删
void year_month_day(int year, int month, int* pday);
int main()
{
int day,month,year;
scanf("%d/%d/%d", &year, &month,&day);
year_month_day(year,month, &day);
printf("%d",day);
return 0;
}
void year_month_day(int year, int month, int *pday) //函数部分
{
int k, leap;
int sum = 0;
int tab[2][13] = { //每个月的天数
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31},
};
leap = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; //判断闰年
for (k = 1; k<month; k++)
{
sum += tab[leap][k];
}
*pday += sum;
}
如果要输入年份、天数得出是该年的第几天,如下所示。
#pragma warning(disable:4996)
#include<stdio.h>
#include<math.h>
void month_day(int year, int yearday, int* pmonth, int* pday);
int main()
{
int pday, pmonth, year, yearday;
scanf("%d%d", &year, &yearday);
month_day(year, yearday, &pmonth, &pday);
printf("%d-%d-%d\n", year, pmonth, pday);
return 0;
}
void month_day(int year, int yearday, int* pmonth, int* pday) {
int k, leap;
int tab[2][13] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31},
};
leap = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
for (k = 1; yearday > tab[leap][k]; k++)
{
yearday -= tab[leap][k]; //输入的天数减去每个月对应天数
}
*pmonth = k;
*pday = yearday;
}