任务七:以不同的形式输出日期,月份以英文显示,涉及类,构造函数等等,并限定月份只有12个月,日期与实际情况相同,如果输入错误则显示为0.
2-3
#include "stdafx.h"
#include <stdio.h>
#include<iostream>
#include<string>
using namespacestd;
class time{
intx;
inty;
intz;
public:
time(time&t);
time(intD = 0, int M = 0, intY = 0);
intgetx();
string gety();
int getz();
};
time::time(intD, int M, int Y)
{
x = D;
y = M;
z = Y;
}
int time::getx()
{
intd,leap;
switch(y){//选择月份
case1:
case3:
case5:
case7:
case8:
case10:
case12:
{if(x > 0 && x <= 31)
d = x;
else
d = 0;
}
break;
case4:
case6:
case9:
case11:
{if(x > 0 && x <= 30)
d = x;
else
d = 0;
}
break;
case2:
if(z % 400 == 0)//年份能被400整除的是闰年
leap= 1;
elseif(z % 4 == 0 && z % 100 != 0)//年份能被4整除,但不能被100整除的是闰年
leap= 1;
else
leap= 0;
default:
d=0;
if(leap)
{
if(x > 0 && x <= 29)
d= x;
else
d= 0;
}
else
{
if(x > 0 && x <= 28)
d= x;
else
d= 0;
}
}
return d;
}
string time::gety()
{
string m;
switch(y)
{
case1:m = "January"; break;
case2:m = "February"; break;
case3:m = "March"; break;
case4:m = "April"; break;
case5:m = "May"; break;
case6:m = "June"; break;
case7:m = "July"; break;
case8:m = "August"; break;
case9:m= "September"; break;
case10:m= "October"; break;
case11:m= "November"; break;
case12:m= "December"; break;
}
returnm;
}
int time::getz()
{
intyear;
if(z > 0 && z <= 9999)
year =z;
else
year =0;
returnyear;
}
time::time(time&t)
{
cout<< "调用复制构造函数:" << endl;
x = t.x;
y = t.y;
z = t.z;
}
voidmain()
{
int a, b,c;
cout << "请输入日期(年月日,c,b,a):"<< endl;
cin >> c >> b >> a;
time t(a, b,c);
cout << "输出日期格式,年-月-日:" << t.getz() << "-"<< t.gety() << "-"<< t.getx() << endl;
cout << "输出日期格式,月-日-年:" << t.gety() << "-"<< t.getx() << "-"<< t.getz() << endl;
cout << "输出日期格式,月/日/年:" << t.gety() << "/"<< t.getx() << "/"<< t.getz() << endl;
cout << "输出日期格式,月日年:"<< t.gety() << " "<< t.getx() << " "<< t.getz() << endl;
cout << "输出日期格式,日月年:"<< t.getx() << " "<< t.gety() << " "<< t.getz() << endl;
cout << "输出日期格式,日/月/年:" << t.getx() << "/"<< t.gety() << "/"<< t.getz() << endl;
cout << "输出日期格式,月日.年:" << t.gety() << "" << t.getx() << "."<< t.getz() << endl;
}