第几天?
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
Author
lcy
Source
C语言程序设计练习(一)
解题思路
主要在于闰年的判断
AC
#include<iostream>
using namespace std;
int month[13];//全局数组
int main()
{
month[1] = 31;
month[2] = 28;//二月份赋值不必要
month[3] = 31;
month[4] = 30;
month[5] = 31;
month[6] = 30;
month[7] = 31;
month[8] = 31;
month[9] = 30;
month[10] = 31;
month[11] = 30;
month[12] = 31;//月份赋值
int a, b, c,ans;
while (scanf("%d/%d/%d", &a, &b, &c) != EOF) {
ans = 0;
if(a%400==0)month[2] = 29;
else if(a%4==0 && a%100!=0)month[2] = 29;
while (b--)
ans += month[b];
cout << ans + c << endl;
month[2] = 28;
}
return 0;
}
2024.02.27
#include<stdio.h>
using namespace std;
int main() {
int month_day_num[13] = {31,28,31,30,31,30,31,31,30,31,30,31};
int month_day_num_spec[13] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int year, month,day;
int count;
while (scanf("%d/%d/%d", &year,&month,&day) != EOF) {
count = 0;
if ((year % 4 == 0 && year % 100 !=0) || (year % 400 == 0)) {
for (int i = 0; i < month-1; i++) {
count += month_day_num_spec[i];
}
}
else {
for (int i = 0; i < month-1; i++) {
count += month_day_num[i];
}
}
count += day;
printf("%d\n",count);
}
return 0;
}