新手小白记录c++代码编写日常? 有问题欢迎指出
题目:
Tom也是一个ACM爱好者,从2000年1月1日就开始了ACM/ICPC的练习,一直坚持到现在。可惜的是,他一直采用的是这种“三天打渔两天晒网”的训练方式,也就是说,每做三天的训练,一定会休息两天,如此反复,直到今天。
现在的问题是:给你一个日期,你能计算出这一天Tom是在训练还是休息吗?
Input
输入数据首先包含一个整数T(T<=20),表示有T组测试数据,然后是T行,每行包含一个格式如“YYYY/MM/DD”的日期,题目保证所有日期在2000年1月1日和今天之间
Output
对于每个测试用例,如果Tom在这一天是训练,则请输出“Fishing”,否则,请输出“Resting”。
Sample Input
2
2000/01/03
2000/01/04
Sample Output
Fishing
Resting
代码编写如下:
#include<iostream> ?//1599
using namespace std;
int main()
{
?? ?int n, y, m, d, i,t=0;
?? ?char p = '/';
?? ?cin >> n;
?? ?for (i = 0; i < n; i++)
?? ?{
?? ??? ?t = 0;
?? ??? ?cin >> y >> p >> m >> p >> d;
?? ??? ?int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
?? ??? ?if (y > 2000)? ? ?//计算年数
?? ??? ?{
?? ??? ??? ?int w ;
?? ??? ??? ?for (w=2000;w<y;w++)
?? ??? ??? ?{
?? ??? ??? ??? ?for (int k = 0; k < 12; k++)
?? ??? ??? ??? ??? ?t += a[k];
?? ??? ??? ??? ?if (w % 4 == 0 && w % 100 != 0||w%400==0)
?? ??? ??? ??? ??? ?t++;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?for (int k = 0; k <= m - 1; k++)
?? ??? ?{
?? ??? ??? ??? ?if (y % 400 == 0 || y % 4 == 0 && y % 100 != 0&&m>2)
?? ??? ??? ??? ??? ?t++;
?? ??? ??? ??? ?t += a[k];
?? ??? ?}
?? ??? ??? ?t = t - a[m-1] + d-1;
?? ??? ??? ?
?? ??? ?if (t % 5 <= 3)
?? ??? ??? ?cout << "Fishing" << endl;
?? ??? ?else
?? ??? ??? ?cout << "Resting" << endl;
?? ?}
}