#include <iostream>
using namespace std;
class CDate {//定义一个名为CDate的类
public:
    void setDate(int year, int month, int day) {//内联函数,向私密数据传递参数
        Year = year;
        Month = month;
        Day = day;
    }
    void increaseDate(int a, int b, int c);//成员函数,用于天数加一
    void showDate();//成员函数,用于输出新天数
private:
    int Year;
    int Month;
    int Day;
};
inline void CDate::showDate()
{
    cout << Year << "/" << Month << "/" << Day  << endl;
}
void CDate::increaseDate(int a, int b, int c)
{
    if ((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0))//首先判断是否为闰年
    {
        if (b == 2)//然后判断是否是二月
        {
            if (c == 29) {
                Year = a;
                Month = b + 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
        else if (b == 1 || b == 3 || b == 5 || b == 7 || b == 8 || b == 10 )//如果是大月,则一个月有31天
        {
            if (c == 31)
            {
                Year = a;
                Month = b + 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
        else if (b == 4 || b == 6 || b == 9 || b == 11)//如果是小月则一个月30天
        {
            if (c == 30)
            {
                Year = a;
                Month = b + 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
        else
        {
            if (c == 31)
            {
                Year = a + 1;
                Month = 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
    }
    else//不是闰年的情况,只有2月和上面不同
    {
        if (b == 2)
        {
            if (c == 28) {
                Year = a;
                Month = b + 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
        else if (b == 1 || b == 3 || b == 5 || b == 7 || b == 8 || b == 10)
        {
            if (c == 31)
            {
                Year = a;
                Month = b + 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
        else if (b == 4 || b == 6 || b == 9 || b == 11)
        {
            if (c == 30)
            {
                Year = a;
                Month = b + 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
        else
        {
            if (c == 31)
            {
                Year = a + 1;
                Month = 1;
                Day = 1;
            }
            else
            {
                Year = a;
                Month = b;
                Day = c + 1;
            }
        }
    }
}
int main()
{
    int x, y, z;
    while (cin >> x >> y >> z)//多组输入
    {
        CDate riqi;//初始化内部数据
        riqi.setDate(x, y, z);
        riqi.increaseDate(x, y, z);
        riqi.showDate();
    }
}

这道题我是用的最笨的办法,用if、else来判断大月、小月、和2月的天数不同的情况。还可以使用数组 or switch的方法来进行求解

数组代码如下

#include<iostream>
using namespace std;
int a[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
class CDate{
public:
    void setDate(int y, int m, int d);
    void increaseDate();
    void showDate();
    ~CDate(){};
private:
    int year, month, day;
};
void CDate::setDate(int y, int m, int d){
    year = y;
    month = m;
    day = d;
};
void CDate::increaseDate(){
    a[2] = (!(year % 4) && (year % 100) || !(year % 400) ? 29: 28);
    if (++day > a[month]) day = 1, month++;
    if(month > 12) month = 1, year++;
};
void CDate::showDate(){
    cout << year << "/" << month << "/" << day << endl;
};
int main()
{
    CDate i;
    int year, month, day;
    while(cin >> year >> month >> day){
        i.setDate(year, month, day);
        i.increaseDate();
        i.showDate();
    }
    return 0;
}

设计一个日期类(CDate),属性为年、月、日,成员函数为设置当前日期setDate(…)、当前日期加一天increaseDate()和显示日期showDate()相关推荐

  1. 设计一个笔记本电脑类,属性随意,并且进行属性私有化,对外提供公开的set和get方法。 设计一个可插拔的接口:InsertDrawable,该接口有什么方法自行定义。

    代码 /* 开放型题目:设计一个笔记本电脑类,属性随意,并且进行属性私有化,对外提供公开的set和get方法.设计一个可插拔的接口:InsertDrawable,该接口有什么方法自行定义.设计一个鼠标 ...

  2. 设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号

    设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号 #include<iostream> #include <string>using names ...

  3. p设计一个Person类,属性有姓名、年龄、性别,创建方法personInfo,打印输出这个人的信息;创建Student类,继承Person类,属性有学院college,班级Group,重写父类Per

    class Person:def __init__(self,name,age,sex):self.name=nameself.age=ageself.sex=sexdef personInfo(se ...

  4. 【c++类和对象——设计一个学生类】

    设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,并且可以显示. 解法1: #include<iostream> using namespace std; #include<s ...

  5. java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...

    [填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...

  6. java定义一个日期类 包括年 月 日_【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期..._考试资料网...

    填空题[说明] 设计一个日期类Date包括年.月.日等私有数据成员.要求实现日期的基本运算,如某日期加上天数.某日期减去天数.两日期相差的天数等. 在Date类中设计如下重载运算符函数: Date o ...

  7. java box类定义三变量_01.类的成员变量:\n设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计...

    01.类的成员变量:\n设计一个立方体类Box,定义三个属性,分别是长,宽,高.定义二个方法,分别计算并输出立方体的体积和表面积 答:java.util.Scanner; public class B ...

  8. JAVA设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight

    编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数loader.卡车类Truck是C ...

  9. 设计一个矩形类,完成计算矩形面积和显示矩形属性的功能。

    / /* [基本题]设计一个矩形类,完成计算矩形面积和显示矩形属性的功能. */ #include<iostream> using namespace std; class Retangl ...

最新文章

  1. ​基于BCI的现代神经反馈有助于认知增强
  2. 白话Elasticsearch08-深度探秘搜索技术之基于boost的细粒度搜索条件权重控制
  3. C++Primer再学习(3)
  4. pmp每日三题(2022年2月21日)
  5. [转]JSP中EL表达式三元运算符的使用
  6. Java 23种设计模式案例:原则及分类
  7. 结合file和iconv命令转换文件的字符编码类型
  8. 洛谷-P3203 弹飞绵羊 分块
  9. 二叉树的建立与三种遍历
  10. hevc/265 开源项目及相关
  11. PC远程调试设备(转)
  12. autocad锐龙英特尔_4千左右预算,2020年CAD/SU/犀牛/Revit轻薄本推荐/选购指南
  13. 2020年高压电工模拟考试题库及高压电工作业模拟考试
  14. Word导出pdf时Origin图片出现重影(重叠)
  15. 有一个程序员男朋友是什么样的体验?
  16. jsp70786体育馆售票门票系统
  17. html 设置响应X-frame,X-Frame-Options(点击劫持)漏洞分析及web配置修复
  18. SaltStack简介
  19. MySQLSyntaxErrorException
  20. 某车联网App 通讯协议加密分析(四) Trace Code

热门文章

  1. 时间复杂度计算超全整理!!(数据结构和算法的第一步
  2. 微信小程序---获取标签节点的信息
  3. 基于阿里云物联网的无人值守远程农业智慧盒DIY之(二)太阳能-蓄电池板的树莓派供电系统。
  4. Python获取文件哈希md5、sha256、sha512等方法
  5. windows7 校验下载文件的sha512
  6. AntDB-M数据库锁分析,不要错过!
  7. 关于Unicode控制字符RLO,LRO,PDF 的坑
  8. 如何在Mac电脑上提取视频中的音频文件
  9. java基础入门-01-【基础、运算符、判断和循环、数组、方法】
  10. 嵌入式系统的接口测试策略