题目描述

设计一个日期类Date,要求数据成员为私有,成员函数为公有,其中setDate()用来设置日期,Rise()用来实现日期增加一天,Print()用来输出日期等。设计一个友元函数Equal()用来比较两个日期是否相等。主函数内定义相关对象,验证各个函数。

输入

共有两行,每行三个正整数,中间用空格隔开,代表两个日期。其中三个正整数分别对应年、月、日。

输出

共有三行,第一行输出两个日期是否相等的结果,相等输出True,不等输出False。第二行输出三个正整数,中间用空格隔开,代表第一个日期增加一天后的结果。第三行输出三个正整数,中间用空格隔开,代表第二个日期增加一天后的结果。三个正整数依次代表年、月、日,每行结尾输出换行。

样例输入

2000 2 28
1996 3 31

样例输出

False
2000 2 29
1996 4 1

写在前面

        本题是类与对象的练手题目,本身没有思维上的难度,用来熟悉类与对象的编程思维是再好不过了。要实现日期后推一天,便要考虑年和月的进位,不可避免要考虑到闰年的影响。

        具体看程序吧:

#include<iostream>
using namespace std;
bool loop(int y)//判断是否闰年
{if(y%400==0)return 1;else if(y%4==0&&y%100!=0)return 1; else return 0;
}
int dom(int m,int y)//dom(day of month)用来判断该年的该月有多少天,m:month,y:year.
{int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(loop(y))a[1]=29;return a[m-1];
}
class Date{int yea,mon,day;public:void setdate(int y,int m,int d);void rise();void print();friend void equal(Date a,Date b);
};
void Date::print()
{cout<<yea<<" "<<mon<<" "<<day<<endl;
}
void Date::setdate(int y,int m,int d)
{yea=y;mon=m;day=d;
}
void equal(Date a,Date b)
{if(a.yea==b.yea&&a.mon==b.mon&&a.day==b.day)cout<<"True"<<endl;else cout<<"False"<<endl;
}
void Date::rise()
{if(mon==12&&day==31)//特判一下到达下一年的情况{yea+=1;mon=1;day=1;}else{day+=1;if(day>dom(mon,yea))//如果加一天后超过该月总天数则后推一个月{mon+=1;day=1;}}}
int main()
{Date a,b;int y,m,d;cin>>y>>m>>d;a.setdate(y,m,d);cin>>y>>m>>d;b.setdate(y,m,d);equal(a,b);a.rise();b.rise();a.print();b.print();return 0;
}

C++类与对象练习题——日期类相关推荐

  1. 类和对象实战 —— 日期类的实现

    文章目录 前言 定义日期类 1. 构造函数 2. 拷贝构造 3. 打印函数 4. 赋值运算符重载 5. 析构函数 6. 日期类的大小关系比较

  2. (教学思路 c#之类一)声明类和对象、定义类成员及其引用

    上一节(教学思路 c#之面向对象二)初步理解面向对象的基本概念中,我没有提到任何的代码,只是用语言和实例来说明什么是类和对象以及面向对象的特性等基本概念,类是c#程序语言的重要核心,也是构建应用程序最 ...

  3. java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

    java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...

  4. php 什么是对象,什么是PHP类和类的对象(PHP的类简介)

    什么是PHP类和类的对象(PHP的类简介) 类(Class):是一些变量与一些使用这些变量的函数的集合. 可简单理解为函数和变量的集合,或变量和函数的定义的集合. 语法是: class Class_n ...

  5. C#中什么是类,类和对象的关系,类的访问修饰符?

    类以及类和对象的关系以及类的访问修饰符 一.类的概念: 二.类和对象的关系: 三.类的组成: 四.类的创建: 五.类的访问修饰符: 一.类的概念: 类是对于某一类对象的一个统称,类是对象的抽象化,对象 ...

  6. java类和对象试题_java类和对象练习题1

    1.请定义一个交通工具(Vehicle)的类,其中有: ⦁ 属性:速度(speed),体积(size)等 ⦁ 方法:移动(move()),设置速度(setSpeed(int speed)),设置体积( ...

  7. 类与对象练习题(三)---Array/Person类

    在刚开始学习c++的时候刷了很多基础题,这些基础题比较适合初学C++的码友,所以在学完就立即进行了整理,一是为了让初学C++的码友有所参考,二也是为了复习一下所学过知识. 但因为当时在整理时,时间有点 ...

  8. java中日历类的用法_java日期类的用法

    java日期类的用法 不管你是处理财务交易还是计划着下一步的行动,你都要知道怎样在Java中建立,使用和显示日期.这需要你简单的查阅一下相应类的API参考:一个日期可以创建3个相关类的对象.这篇文章告 ...

  9. 【C++】类和对象---什么是类?

    目录 1.面向过程和面向对象初步认识 2.类的引入 2.1使用struct定义类 3.类的定义 3.1类的两种定义方式: 3.2成员变量命名规则的建议 3.3成员函数与成员变量定义的位置建议 4.类的 ...

最新文章

  1. centos yum 安装配置
  2. iOS 开发笔记 cocoapods 配置遇到的问题
  3. mysql全量和增量备份脚本
  4. poj Buy Tickets
  5. The Tao to Excellent
  6. oracle怎么变为整数,如何在Oracle 11g SQL中为char添加整数?(How to add integers to char in Oracle 11g SQL?)...
  7. 拉普拉斯算子属于卷积方法吗_2020 年 GNN 开卷有益与再谈图卷积
  8. 边界安全 - CDN/DMZ/网络协议
  9. python中sorted_关于python中sorted方法的key参数
  10. ubuntu下tftp服务器环境搭建
  11. 分站活动丨“香港科大商学院-黑瞳科技”2020【人工智能】百万奖金国际创业大赛--上海站+成都站宣讲会...
  12. 制作学术PPT的注意事项如何制作模板(附模板下载链接)
  13. pywifi安装了,打了一行import pywifi还报错,解决方案来啦!
  14. 鲁大师11月新机排行:只有5款机型发布,OPPO撑起榜单
  15. 微信开发常见问题:自动音乐播放,alert 显示网址
  16. 虚幻引擎_矢量场初探
  17. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证
  18. Office 365平台及其价值主张
  19. DDR SDRAM原理介绍
  20. Python math.cosh() 方法

热门文章

  1. Astah 建模软件安装
  2. Day1:Angry young women: A new generation of activists is challenging misogyny
  3. linux ubuntu编码转换,Ubuntu中的文件编码转换
  4. Oracle数据库之审计(五)
  5. Css选择器(上) 让样式无孔不入
  6. 电路原理图中的各种地(数字地、模拟地、信号地、直流地、交流地、屏蔽地)的区别
  7. docker-e参数,顺利收获Offer
  8. 35岁的程序员被优化,是市场经济的必然选择吗
  9. 2026-Keroro侵略地球
  10. Google面试题(java)—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD