给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
问题链接:https://vjudge.net/contest/274223#problem/J
问题简述:输入日期(格式为—/—/—),求该日在那年中的第几天。
问题分析:判断年份是否为闰年,将月份对应的天数和该月的日数累加。
程序说明:用while循环输入多组数据,for循环提取有用信息,if语句判断年份,最后用for循环和if语句计算结果。
AC通过的C++程序如下:
include<iostream>
using namespace std;
int main()
{
char a[100];
int x = 1,n=0, b[3]={ 0 };
while (cin >> a)
{
int i = 0;
b[0] = 0, b[1] = 0, b[2] = 0, n = 0;
x = 1;
for (; a[i] != '/'; i++)
{
b[0] = b[0] * x +( a[i]-48);
x = 10;
}
i++;
x = 1;
for (; a[i] != '/'; i++)
{
b[1]=b[1]*x+(a[i]-48);
x = 10;
}
x = 1;
i++;
for (; a[i] != '\0'; i++)
{
b[2] = b[2] * x +( a[i]-48);
x = 10;
}
if((b[0]%4==0)&&(b[0]%100!=0)||b[0]%400==0)
{
for (int j = 1; j < b[1]; j++)
{
if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12)
{
n += 31;
}
if (j == 2)
{
n += 29;
}
if (j == 4 || j == 6 || j == 9 || j == 11)
{
n += 30;
}
}
n += b[2];
cout << n << endl;
}
else
{
for (int j = 1; j < b[1]; j++)
{
if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12)
{
n += 31;
}
if (j == 2)
{
n += 28;
}
if (j == 4 || j == 6 || j == 9 || j == 11)
{
n += 30;
}
}
n += b[2];
cout << n << endl;
}
}
return 0;
}







网友评论