[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;
}

总结

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

我是秋说,我们下次见。

目录
相关文章
|
1天前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
17 0
|
1天前
|
C语言 C++ 容器
C++ string类
C++ string类
8 0
|
1天前
|
Java C++
部落(pta)(并查集) Java以及C++
部落(pta)(并查集) Java以及C++
10 2
|
1天前
|
C++ Linux
|
1天前
|
编译器 C++
【C++】继续学习 string类 吧
首先不得不说的是由于历史原因,string的接口多达130多个,简直冗杂… 所以学习过程中,我们只需要选取常用的,好用的来进行使用即可(有种垃圾堆里翻美食的感觉)
7 1
|
1天前
|
算法 安全 程序员
【C++】STL学习之旅——初识STL,认识string类
现在我正式开始学习STL,这让我期待好久了,一想到不用手撕链表,手搓堆栈,心里非常爽
16 0
|
1天前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
16 0
【C++】string学习 — 手搓string类项目
|
1天前
|
Java C++ Python
【C++从练气到飞升】06---重识类和对象(二)
【C++从练气到飞升】06---重识类和对象(二)
|
1天前
|
编译器 C++
【C++从练气到飞升】06---重识类和对象(一)
【C++从练气到飞升】06---重识类和对象(一)