永发信息网

(1)用下面的格式输出日期 日/月/年 定义一个满足如下要求的Date类 (1)用下面的格式输出日期 日/月/年

答案:4  悬赏:40  手机版
解决时间 2021-02-09 14:29
(1)用下面的格式输出日期 日/月/年 定义一个满足如下要求的Date类 (1)用下面的格式输出日期 日/月/年
最佳答案
这个不是写过么?上次有个XX,帮他写了把别人的列为最佳答案
class Date
{
public:
Date()
{
year = 0;
month = 0;
day = 0;
}
void SetDate(int y, int m, int d);
void GetDate();
void Tomorrow();
private:
int year;
int month;
int day;
};

void Date::SetDate(int y, int m, int d)
{
if (m < 1 || m > 12)
{
cout << "month error!" << endl;
return;
}
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
{
if (d < 1 || d > 31)
{
cout << "day error!" << endl;
return;
}
}
else if (m == 4 || m == 6 || m == 9 || m == 11)
{
if (d < 1 || d > 30)
{
cout << "day error!" << endl;
return;
}
}
else
{
if ((((y % 4) == 0) && ((y % 100) != 0)) || ((y % 400) == 0))
{
if (d < 1 || d > 29)
{
cout << "day error!" << endl;
return;
}
}
else
{
if (d < 1 || d > 28)
{
cout << "day error!" << endl;
return;
}
}
}
year = y;
month = m;
day = d;
}

void Date::GetDate()
{
cout << day << "/" << month << "/" << year << endl;
}

void Date::Tomorrow()
{
day++;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
if (day > 31)
{
day = 1;
month++;
}
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (day > 30)
{
day = 1;
month++;
}
}
else
{
if ((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0))
{
if (day > 29)
{
day = 1;
month++;
}
}
else
{
if (day > 28)
{
day = 1;
month++;
}
}
}
if (month > 12)
{
month = 1;
year++;
}
}

int main()
{
Date date;
date.SetDate(2000, 2, 29);
date.GetDate();
date.Tomorrow();
date.GetDate();
}

void main() //gets问题
{
char name [5][10];
float score[5];
int i;
for (i = 0; i < 5; i++)
{
//gets(name[i]);
scanf("%s", name[i]);
scanf("%f", &score[i]);
}
cout << "-----------------------\n";
for (i = 0; i < 5; i++)
{
printf("%s,%f\n", name[i], score[i]);
}
}
全部回答
引用Jorecus的回答:
#include
class Date
{
public:
bool Legal(int y, int m, int d)
{if(y>9999||y<1||d<1||m<1||m>12)
return false;
int dayLimit=30;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
dayLimit++;
if(m==2) dayLimit = IsLeapYear(y) ? 29 : 28;
return (d>dayLimit)? false : true;}
bool IsLeapYear(int y)
{return (y%4==0)&&(y%100==0)||(y%400==0);}

void SetDay(int y,int m,int d)
{year=y;month=m;day=d;}

void AddOneDay()
{if(Legal(year,month,day+1))
day++;
else if(Legal(year,month+1,1))
day=1,month++;
else if(Legal(year+1,1,1))
year++,month=1,day=1;
}
void Display()
{
cout <}
protected:

int year;
int month;
int day;
};
void main()
{Date a;
a.SetDay(2011,9,29);
a.Display();
a.AddOneDay();
a.Display();
}一楼的运行不了
楼上的秀才做的可行,不过你可以优化一下!
#include
class Date
{
public:
bool Legal(int y, int m, int d)
{if(y>9999||y<1||d<1||m<1||m>12)
return false;
int dayLimit=30;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
dayLimit++;
if(m==2) dayLimit = IsLeapYear(y) ? 29 : 28;
return (d>dayLimit)? false : true;}
bool IsLeapYear(int y)
{return (y%4==0)&&(y%100==0)||(y%400==0);}

void SetDay(int y,int m,int d)
{year=y;month=m;day=d;}

void AddOneDay()
{if(Legal(year,month,day+1))
day++;
else if(Legal(year,month+1,1))
day=1,month++;
else if(Legal(year+1,1,1))
year++,month=1,day=1;
}
void Display()
{
cout <}
protected:

int year;
int month;
int day;
};
void main()
{Date a;
a.SetDay(2011,9,29);
a.Display();
a.AddOneDay();
a.Display();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
突发事件的特点有哪些
梦见把孩子弄丢了
时尚·爱家家居怎么去啊,有知道地址的么
有人对你说百香果什么意思
为什么跟老公越来越没感觉跟情人就有感觉
阿Q精神具有积极意义(辩论)正反方都要...
泰和足浴(磐石园南)在什么地方啊,我要过去处
移动wifi设备得多钱 流量费用怎么算的 在家能
完美产品扫二维码验真伪可靠吗
清清酿皮怎么去啊,有知道地址的么
中国政法大学南门在哪里啊,我有事要去这个地
管道输送的高压蒸汽在使用中有一定要求,以下
E14接口的灯具能配多大的灯泡啊!
没有对方手机怎样在手机上查微信聊天记录
吴家岭在什么地方啊,我要过去处理事情
推荐资讯
关于机战z全改造奖励?
(m+n)²,(m-n)²,mn这三个代数式之间的等量关
《三国演义》第七十四回的标题是什么?
花山区文化馆金家庄分馆地址在什么地方,想过
一款工业仪表采用的是飞思卡尔的S12系列的单
中泉英雄等日本演员为何参演《南京!南京!》
非诚勿扰女嘉宾有出场费吗
重庆双庆SQ150-2幻影摩托整车参数是什么?
3个人被困在孤岛上,他们做了一只只能载重0.11
蓝海苑北门在什么地方啊,我要过去处理事情
合利车业怎么去啊,我要去那办事
上海江浩宾馆地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?