愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

PAT-练习3:该日是该年的第几天

定义一个日期类Date,内有数据成员年、月、日,另有成员函数:构造函数用于初始化数据成员,输出,闰年的判断。
编写主函数:创建日期对象,计算并输出该日是该年的第几天。 输入格式: 测试输入包含若干测试用例,每个测试用例占一行。当读入0 0 0时输入结束,相应的结果不要输出。

输入样例:

2006 3 5
2000 3 5
0 0 0
输出样例:(括号内为说明)

64 (2006年3月5日是该年的第64天)
65 (2000年3月5日是该年的第65天)
Sample Input:
2006 3 25
2000 3 28
0 0 0
Sample Output:
84
88

#include <iostream>
using namespace std;

class Date {
public:
    Date(int y, int m, int d):year(y), month(m), day(d) {}
    bool isLeap() {
        if((year%4==0&&year%100!=0) || year%400==0) return true;
        return false;
    }
    void display() {
        int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        if(isLeap()) days[2] = 29;
        int count = day;
        for(int i=1; i<month; i++) {
            count += days[i];
        }
        cout << count << endl;
    }
private:
    int year;
    int month;
    int day;
};

int main() {
    int year, month, day;
    while(cin >> year >> month >> day) {
        if(year==0&&month==0&&day==0) break;
        Date d = Date(year, month, day);
        d.display();
    }
    
    return 0;
}