问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...一个表示月份的整数,分别代表日期的年、月、日,计算并在屏幕上...

发布网友 发布时间:2024-03-16 04:25

我来回答

1个回答

热心网友 时间:2024-10-15 00:07

#include<iostream>
#include<cmath>
using namespace std;
class Date
{
public:
Date(int y=1900,int m=1, int d=1);
bool isleapyear();
bool isendofmounth();
void add_day(int dd);
void print_mdy();
int jiange_day();
private:
void setdate(int yy,int mm,int dd);
void add_oneday();
private:
int year,mounth,day;
};

Date::Date(int y,int m, int d)
{
setdate(y,m,d);
}
void Date::setdate(int yy,int mm,int dd)
{
year=(yy>=1900 && yy<=2100)?yy:1900;
mounth=(mm>=1 && mm<=12)?mm:1;
switch(mounth)
{
case 4:
case 6:
case 8:
case 10: day=(dd>=1 && dd<=30)?dd:1;
case 2:
if(isleapyear()) day=(dd>=1 && dd<=29)?dd:1;
else day=(dd>=1 && dd<=28)?dd:1;
default:
day=(dd>=1&&dd<=31)?dd:1;
}
}

bool Date::isleapyear()
{
if(year%4) return false;
else return true;
}

bool Date::isendofmounth()
{
switch(mounth)
{
case 4:
case 6:
case 8:
case 10: return day==30;
case 2:
if(isleapyear()) return day==29;
else return day==28;
default: return day==31;
}
}

void Date::add_day(int dd) //判断n天后是什么日子
{
for(int i=1;i<=dd;i++)
add_oneday();
}
void Date::add_oneday() //一天后是什么日子
{
if(isendofmounth())
{
if(mounth==12)
{
year=year+1;
mounth=1;
day=1;
}
else
{
mounth=mounth+1;
day=1;
}
}
else
{
day=day+1;
}
}

void Date::print_mdy()
{
char *pmounth[12]={"janary","february","march","april","may",
"june","july","august","september","october","nobember","december"};
cout<<"现日期是:"<<pmounth[mounth-1]<<day<<", "<<year<<endl;
}

int Date::jiange_day() //距1900,1,1日相差天数
{
int days;
days=(year-1900)*365;
days=days+(year-1900)/4;
while(mounth!=1)
{
switch(mounth)
{
case 2:
days=days+31;
case 3:
{
if(isleapyear())
days=days+29;
else days=days+28;
}
case 4:
days=days+31;
case 5: days=days+30;
case 6: days=days+31;
case 7: days=days+30;
case 8: days=days+31;
case 9: days=days+31;
case 10: days=days+30;
case 11: days=days+31;
case 12: days=days+30;
}
mounth--;
}
days=days+(day-1);
return days;
}

int main()
{
using namespace std;
int year,mounth,day;
cout<<"可以构造对象计算任意两个日期间隔天数,判断n天后是什么日子:"<<endl;
cout<<"请输入日期:\n";
cin>>year>>mounth>>day;
Date date1(year,mounth,day);
cout<<"请再输入日期:\n";
int year1,mounth1,day1;
cin>>year1>>mounth1>>day1;
Date date2(year1,mounth1,day1);
cout<<"计算日期1间隔n天后日期,请输入天数:\n";
int day2,day3;
cin>>day2;
date1.add_day(day2);
cout<<"日期1和日期2相差天数为:";
day3=abs(date1.jiange_day()-date2.jiange_day());
cout<<day3<<endl;
return 0;
}

//这个是我以前打过的一个类似的程序,其中你不想要的函数
自己删掉就是了。

热心网友 时间:2024-10-15 00:14

#include<iostream>
#include<cmath>
using namespace std;
class Date
{
public:
Date(int y=1900,int m=1, int d=1);
bool isleapyear();
bool isendofmounth();
void add_day(int dd);
void print_mdy();
int jiange_day();
private:
void setdate(int yy,int mm,int dd);
void add_oneday();
private:
int year,mounth,day;
};

Date::Date(int y,int m, int d)
{
setdate(y,m,d);
}
void Date::setdate(int yy,int mm,int dd)
{
year=(yy>=1900 && yy<=2100)?yy:1900;
mounth=(mm>=1 && mm<=12)?mm:1;
switch(mounth)
{
case 4:
case 6:
case 8:
case 10: day=(dd>=1 && dd<=30)?dd:1;
case 2:
if(isleapyear()) day=(dd>=1 && dd<=29)?dd:1;
else day=(dd>=1 && dd<=28)?dd:1;
default:
day=(dd>=1&&dd<=31)?dd:1;
}
}

bool Date::isleapyear()
{
if(year%4) return false;
else return true;
}

bool Date::isendofmounth()
{
switch(mounth)
{
case 4:
case 6:
case 8:
case 10: return day==30;
case 2:
if(isleapyear()) return day==29;
else return day==28;
default: return day==31;
}
}

void Date::add_day(int dd) //判断n天后是什么日子
{
for(int i=1;i<=dd;i++)
add_oneday();
}
void Date::add_oneday() //一天后是什么日子
{
if(isendofmounth())
{
if(mounth==12)
{
year=year+1;
mounth=1;
day=1;
}
else
{
mounth=mounth+1;
day=1;
}
}
else
{
day=day+1;
}
}

void Date::print_mdy()
{
char *pmounth[12]={"janary","february","march","april","may",
"june","july","august","september","october","nobember","december"};
cout<<"现日期是:"<<pmounth[mounth-1]<<day<<", "<<year<<endl;
}

int Date::jiange_day() //距1900,1,1日相差天数
{
int days;
days=(year-1900)*365;
days=days+(year-1900)/4;
while(mounth!=1)
{
switch(mounth)
{
case 2:
days=days+31;
case 3:
{
if(isleapyear())
days=days+29;
else days=days+28;
}
case 4:
days=days+31;
case 5: days=days+30;
case 6: days=days+31;
case 7: days=days+30;
case 8: days=days+31;
case 9: days=days+31;
case 10: days=days+30;
case 11: days=days+31;
case 12: days=days+30;
}
mounth--;
}
days=days+(day-1);
return days;
}

int main()
{
using namespace std;
int year,mounth,day;
cout<<"可以构造对象计算任意两个日期间隔天数,判断n天后是什么日子:"<<endl;
cout<<"请输入日期:\n";
cin>>year>>mounth>>day;
Date date1(year,mounth,day);
cout<<"请再输入日期:\n";
int year1,mounth1,day1;
cin>>year1>>mounth1>>day1;
Date date2(year1,mounth1,day1);
cout<<"计算日期1间隔n天后日期,请输入天数:\n";
int day2,day3;
cin>>day2;
date1.add_day(day2);
cout<<"日期1和日期2相差天数为:";
day3=abs(date1.jiange_day()-date2.jiange_day());
cout<<day3<<endl;
return 0;
}

//这个是我以前打过的一个类似的程序,其中你不想要的函数
自己删掉就是了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 在我的房子里我有几本书。怎样译英文 我的卧室在房子的左边书房在卧室的后面我每天在书房学习用英语... 为什么医生都在拍视频做科普? 前赤壁赋第四段表达怎样的人生哲学 ...查字典确认是&quot;之&quot;字,我想知道在古代什么人的印章是用牛头的... 赤壁赋这篇文章中第4段苏轼运用了哪种说理方法 怎么改第二次最简单的方法 修改过一次,还想修改怎么办 一年内可以改几次啊! 不到一年怎么改第二次 雄县特色美食 在招聘中应聘者的工作履历核实如何进行,怎么才能辨别履历的真假... 如何识别和防范虚假招聘?7 ...壁挂炉暖气采暖正常,生活热水开始是一会热一会凉,冷水阀门关小也不... 怎么在一年内修改两次 两个人在一起,最有意义的事情是:为了对方变得更加优秀。 用什么软件仿真“分布式电源并入配电网后对网损的影响”的研究啊... 信立农贸批发市场到广州东站多远 信立农批市场到东莞东火车站怎么走 为什么我和别人聊天他们都不回复?我很让他们讨厌?我很无趣?说话的技巧... 汇编语言程序设计,从键盘输入一个两位十进制的月份,然后显示相应的英文... 坠损是什么意思 肝胆不好的人煮鱼时放了白酒能喝鱼汤吗? 泰国南部的哪些游玩地值得安利? 白酒煮尤鱼会不会醉人? 泰国有哪些小众旅行地可以安利给游客? 泰国有哪些人少又宽阔的小众露营地? 如何在手机上输入数字0-9? 医保卡里的钱怎么查询 医保卡里的钱如何查询 怎么查询医保卡的余额 如何查询医保卡的余额 苏子蟹怎么烧好吃怎么烧苏子蟹好吃 爆炒梭子蟹爆炒梭子蟹的做法介绍 怎么样查医保卡余额 医保卡怎么查余额 手机怎么查医保卡余额 手机如何查医保卡余额 ...围绕一张方桌坐8人,两张并起来坐12人,三张并起来坐16人,这样,8张... 什么是配网工程43 电网的供电能力和可用输电能力是一个意思吗? 孕妇喝柠檬水对胎儿有什么好处? 子木茜护肤品怎么样 曦茜公主护肤品靠谱吗