设计一个日期类(CDate),属性为年、月、日,成员函数为设置当前日期setDate(…)、当前日期加一天increaseDate()和显示日期showDate()
#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()相关推荐
- 设计一个笔记本电脑类,属性随意,并且进行属性私有化,对外提供公开的set和get方法。 设计一个可插拔的接口:InsertDrawable,该接口有什么方法自行定义。
代码 /* 开放型题目:设计一个笔记本电脑类,属性随意,并且进行属性私有化,对外提供公开的set和get方法.设计一个可插拔的接口:InsertDrawable,该接口有什么方法自行定义.设计一个鼠标 ...
- 设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号
设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号 #include<iostream> #include <string>using names ...
- 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 ...
- 【c++类和对象——设计一个学生类】
设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,并且可以显示. 解法1: #include<iostream> using namespace std; #include<s ...
- java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...
[填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...
- java定义一个日期类 包括年 月 日_【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期..._考试资料网...
填空题[说明] 设计一个日期类Date包括年.月.日等私有数据成员.要求实现日期的基本运算,如某日期加上天数.某日期减去天数.两日期相差的天数等. 在Date类中设计如下重载运算符函数: Date o ...
- java box类定义三变量_01.类的成员变量:\n设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计...
01.类的成员变量:\n设计一个立方体类Box,定义三个属性,分别是长,宽,高.定义二个方法,分别计算并输出立方体的体积和表面积 答:java.util.Scanner; public class B ...
- JAVA设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight
编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数loader.卡车类Truck是C ...
- 设计一个矩形类,完成计算矩形面积和显示矩形属性的功能。
/ /* [基本题]设计一个矩形类,完成计算矩形面积和显示矩形属性的功能. */ #include<iostream> using namespace std; class Retangl ...
最新文章
- ​基于BCI的现代神经反馈有助于认知增强
- 白话Elasticsearch08-深度探秘搜索技术之基于boost的细粒度搜索条件权重控制
- C++Primer再学习(3)
- pmp每日三题(2022年2月21日)
- [转]JSP中EL表达式三元运算符的使用
- Java 23种设计模式案例:原则及分类
- 结合file和iconv命令转换文件的字符编码类型
- 洛谷-P3203 弹飞绵羊 分块
- 二叉树的建立与三种遍历
- hevc/265 开源项目及相关
- PC远程调试设备(转)
- autocad锐龙英特尔_4千左右预算,2020年CAD/SU/犀牛/Revit轻薄本推荐/选购指南
- 2020年高压电工模拟考试题库及高压电工作业模拟考试
- Word导出pdf时Origin图片出现重影(重叠)
- 有一个程序员男朋友是什么样的体验?
- jsp70786体育馆售票门票系统
- html 设置响应X-frame,X-Frame-Options(点击劫持)漏洞分析及web配置修复
- SaltStack简介
- MySQLSyntaxErrorException
- 某车联网App 通讯协议加密分析(四) Trace Code