c++相关的面向对象编程

img


没有学过指针和友元函数,不使用这两个能实现吗?不能使用c语言

题目没说用指针把,不用指针和友元函数也能实现

img

代码如下:

#include <iostream>
#include <time.h>
using namespace std;

class Date
{
private:
    int year, month, day;
public:
    Date() { int t = time(0); setDate(t); }
    Date(int elapseTime)
    {
        setDate(elapseTime);
    }
    Date(int y, int m, int d) { year = y; month = m; day = d; }
    //getter and seter
    int getYear() { return year; }
    int getMonth() { return month; }
    int getDay() { return day; }
    void setYear(int y) { year = y; }
    void setMonth(int m) { month = m; }
    void setDay(int d) { day = d; }

    void setDate(int elapseTime)
    {
        int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
        int totalday = elapseTime / (24 * 3600);
        day = totalday;
        year = 1970;
        month = 1;
        while (day > 365)
        {
            if (isLeapYear(year))
                day -= 366;
            else
                day -= 365;
            year++;
        }
        //非闰年,并且当前天数是365if (!isLeapYear(year) && day == 365)
            year++;

        //如果是闰年
        if (isLeapYear(year))
        {
            if (day <= 31)
                month = 1;
            else if (day <= 60)
            {
                month = 2;
                day -= 31;
            }
            else if (day <= 91)
            {
                month = 3;
                day -= 60;
            }
            else if (day <= 121)
            {
                month = 4;
                day -= 91;
            }
            else if (day <= 152)
            {
                month = 5;
                day -= 121;
            }
            else if (day <= 182)
            {
                month = 6;
                day -= 152;
            }
            else if (day <= 213)
            {
                month = 7;
                day -= 182;
            }
            else if (day <= 244)
            {
                month = 8;
                day -= 213;
            }
            else if (day <= 274)
            {
                month = 9;
                day -= 244;
            }
            else if (day <= 305)
            {
                month = 10;
                day -= 274;
            }
            else if (day <= 335)
            {
                month = 11;
                day -= 305;
            }
            else
            {
                month = 12;
                day -= 305;
            }
        }
        else
        {
            if (day <= 31)
            {
                month = 1;
            }
            else if (day <= 59)
            {
                month = 2;
                day -= 31;
            }
            else if (day <= 90)
            {
                month = 3;
                day -= 59;
            }
            else if (day <= 120)
            {
                month = 4;
                day -= 90;
            }
            else if (day <= 151)
            {
                month = 5;
                day -= 120;
            }
            else if (day <= 181)
            {
                month = 6;
                day -= 151;
            }
            else if (day <= 212)
            {
                month = 7;
                day -= 181;
            }
            else if (day <= 243)
            {
                month = 8;
                day -= 212;
            }
            else if (day <= 273)
            {
                month = 9;
                day -= 243;
            }
            else if (day <= 304)
            {
                month = 10;
                day -= 273;
            }
            else if (day <= 334)
            {
                month = 11;
                day -= 304;
            }
            else
            {
                month = 12;
                day -= 334;
            }
        }
        day = day + 1;
    }

private:
    int isLeapYear(int y) //判断是否是闰年
    {
        if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
            return 1;
        else
            return 0;
    }


};

int main()
{
    Date d(561555550);
    cout << d.getYear() << "-" << d.getMonth() << "-" << d.getDay();
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632