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

简介: [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;
}

总结

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

我是秋说,我们下次见。

目录
相关文章
|
18天前
|
C++
【PTA】L1-016 验证身份(C++)
【PTA】L1-016 验证身份(C++)
24 0
【PTA】L1-016 验证身份(C++)
|
2天前
|
C++
C++类和对象
C++类和对象
6 0
|
2天前
|
编译器 C语言 C++
【C++基础 】 --- C++ 为什么需要定义成员函数
【C++基础 】 --- C++ 为什么需要定义成员函数
9 0
|
3天前
|
C++
C++:类的补充知识
C++:类的补充知识
12 0
|
3天前
|
编译器 C++
C++:类的默认成员函数
C++:类的默认成员函数
18 0
|
3天前
|
存储 编译器 C语言
C++:类的概念
C++:类的概念
15 0
|
6天前
|
存储 数据安全/隐私保护 C++
基于C++的面向对象程序设计:类与对象的深入剖析
基于C++的面向对象程序设计:类与对象的深入剖析
20 1
|
6天前
|
编译器 C语言 C++
C++类和对象的细节原理:this指针、构造函数和析构函数、深浅拷贝、运算符重载、初始化列表、类的各种成员和方法
C++类和对象的细节原理:this指针、构造函数和析构函数、深浅拷贝、运算符重载、初始化列表、类的各种成员和方法
19 0
|
18天前
|
C++
【PTA】L1-011 A-B (C++)
【PTA】L1-011 A-B (C++)
22 0
【PTA】L1-011 A-B (C++)
|
18天前
|
C++
【PTA】​L1-005 考试座位号​ (C++)
【PTA】​L1-005 考试座位号​ (C++)
23 0
【PTA】​L1-005 考试座位号​ (C++)