[C++/PTA] 类的定义和使用

题目要求

定义一个日期类Date,内有数据成员年、月、日,另有成员函数:构造函数用于初始化数据成员,输出,闰年的判断。编写主函数:创建日期对象,计算并输出该日是该年的第几天。

输入:
每组测试数据仅包含一个测试用例,每个测试用例占一行包括三个数,分别表示年、月、日。

输出:
该日是该年的第几天。

输入样例:
2006 3 5

输出样例:
64 (2006年3月5日是该年的第64天)

解题思路

首先定义一个名为 Date 的类,类中包含以下成员变量:

  • year: 年份
  • month: 月份
  • day: 日
  • y: 判断闰年的标志

以及以下成员函数:

  • pd(): 判断当前年份是否是闰年,如果是,则将 y 标志赋值为 1,否则赋值为 0
  • in(): 输入年、月、日。
  • js(): 计算日期到全年第几天,该函数利用每个月的天数和是否闰年来计算。

同时,在 main() 函数中创建一个 Date 的实例对象 d1,然后按顺序调用 d1 的成员函数,最终输出计算结果。

代码

#include<iostream>
using namespace std;

class Date{
private:
    int year, month, day, y, d;
public:
    int pd()
    {
        if((year%4==0 && year%100!=0) || year%400==0)   // 如果年份符合闰年的条件之一,即可判定为闰年
        {
            y = 1;                                      // 标记为闰年
        }
        else
        {
            y = 0;                                      // 标记为平年
        }
    }

    int in()
    {
        cin >> year >> month >> day;                    // 读取日期数据
    }

    int js()                                            // 计算日期到全年第几天的函数
    {
        int x=0, a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int i, r=0;
        for(i=0; i<month; i++)                          // 循环遍历每个月,将该月的天数累加到变量 x 中
        {
            x += a[i];
        }
        x += day;                                       // 将当前月的天数加上指定的日数
        if(year%4==0 && year%100!=0 || year%100==0)
        {
            r = 1;
        }
        if(r && month>2)                                // 如果当前年份是闰年,并且当前月份大于 2 月,需要将多出的一天加上
        {
            x++;
        }
        return x;                                       // 返回全年第几天的结果
    }
};

int main()
{
    Date d1;
    d1.in();                                            // 调用对象的 in() 函数读取日期数据
    d1.pd();                                            // 调用对象的 pd() 函数判断该年份是否为闰年
    int a = d1.js();                                    // 调用对象的 js() 函数计算日期到全年第几天的结果
    cout << a;                                          // 输出结果

    return 0;
}

总结

该题考察类的定义及使用,知识点较为简单,适合初学者。

我是秋说,我们下次见。

posted @ 2023-06-14 21:48  秋说  阅读(81)  评论(0编辑  收藏  举报