首页 > 编程语言 >[C++/PTA] 类的定义和使用

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

时间:2023-06-14 21:57:49浏览次数:44  
标签:定义 闰年 int 31 C++ PTA 函数 第几天 d1

题目要求

定义一个日期类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;
}

总结

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

我是秋说,我们下次见。

标签:定义,闰年,int,31,C++,PTA,函数,第几天,d1
From: https://www.cnblogs.com/qiushuo/p/17481447.html

相关文章

  • [C++/PTA] 立方体类的实现
    题目要求立方体类Box的实现,完成计算体积、计算表面积、输出结果等功能。其中给定的主函数为:intmain(){floatab;cin>>ab;Boxobj;obj.seta(ab);obj.getvolume();obj.getarea();obj.disp();return0;}输入格式:立方体的边......
  • [C++/PTA] 汽车收费
    题目要求现在要开发一个系统,管理对多种汽车的收费工作。给出下面的一个基类框架classVehicle{protected:stringNO;//编号public:virtualvoiddisplay()=0;//输出应收费用}以Vehicle为基类,构建出Car、Truck和Bus三个类。Car的收费公式为:载客数8+重量2Truck的收费......
  • [C语言/PTA] 学生成绩链表处理
    题目要求本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:structstud_node*createlist();structstud_node*deletelist(structstud_node*head,intmin_score);函数createlist利用scanf从输入......
  • [C语言/PTA] 单链表结点删除
    题目要求本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:structListNode{intdata;ListNode*next;};函数接口定义:structListNode*readlist();structListNode*deletem(structListNode*L,intm);......
  • [C++/PTA] 计算时间相减
    题目要求题目描述:定义一个时间类,小时和分钟是其两个私有成员数据。输入一个起始时间和一个结束时间(起始时间早于结束时间),通过运算符重载-(减号),计算这两个时间相隔多少分钟。说明:这两个时间在同一天之内,且采用24小时计时分式,即从00:00-23:59。输入格式:测试输入包含若干测......
  • [C语言/PTA] 建立学生信息链表
    题目要求本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:voidinput();该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:structstud_node{intnum;/*学号*/charnam......
  • [C++/PTA] 括号匹配
    题目要求给定仅包含()[]{}六种括号的字符串,请你判断该字符串中,括号的匹配是否是合法的,也就是对应括号的数量、嵌套顺序完全正确。输入格式:第一行一个整数T(T<=10)其后T行每行一个字符串只包含[{()}]六种字符(字符串长度2e5以内)输出格式:对于每个字符串,匹配输出Yes,否则输出No......
  • c++的常量折叠
    一,前言有关C++语言的const常量的考察点:肯定是const常量的内存不是分配在read-only的存储区的,const常量的内存分配区是很普通的栈或者全局区域。也就是说const常量只是编译器在编译的时候做检查,根本不存在什么read-only的区域。所以说C++的const常量和常量字符串是不同的,常量字符......
  • [C++/PTA] 办事大厅排队
    题目要求在郑州大学综合办事大厅,每天陆陆续续有很多人来排队办事。现在你能否写程序帮助老师时刻了解当前办理业务的情况。输入格式:第一行一个数字N,表示排队信息或者查询信息条目的数量。以下N行,每行的内容有以下3种情况(1)inname表示名字为name的人员新来到办事大厅,排在......
  • 从C++mutex到futex
    从std::mutex到futex机制我原本出发点是C++std::mutex的实现原理,但是经过一番查阅,发现C++std::mutex是对glibc-nptl库pthread_mutex的封装;而nptl库在用户态完成了futex机制的一部分;最后在以linux为内核的操作系统中,又提供了futex系统调用给glibc-nptl给与底层支撑。因此本文先......