c++date类问题
我的本意是想写一个date类可以设置日期,在设置日期上加一天,输出日期格式为日/月/年我是这样写的#include"stdafx.h"#include<iostream>...
我的本意是想写一个date类 可以设置日期,在设置日期上加一天,输出日期格式为日/月/年 我是这样写的
#include "stdafx.h"
#include <iostream>
using namespace std;
class Date
{ private:
int year,mouth,date;
public:
void setD(int x,int y,int z)
{year=x;mouth=y;date=z;}
void shouD()
{cout<<date<<"/"<<mouth<<"/"<<year<<endl;}
};
int _tmain(int argc, _TCHAR* argv[])
{ int x,y,z,answer;
Date D;
cout<<"输入年月日"<<endl;
cin>>x>>y>>z;
D.setD(x,y,z);
D.shouD();
cout<<"是否想增加一天,answer:1是0否"<<endl;
cin>>answer;
if(answer)
D.setD(x,y,z+1);
D.shouD();
return 0;
}
可以达到目的,可是我想更严密点就该了下
在主函数cin>>x>>y>>z;后面和D.setD(x,y,z);前面加了
while (true)
{if(y<1||y>12)
cout<<"输入错误,请重新输入";
cin>>x>>y>>z;
}
为什么有不行了 输入了 日期 却不能输入.........
对了友友们还能提供别的方法吗 要是类的....谢了 (本人是菜鸟.............) 展开
#include "stdafx.h"
#include <iostream>
using namespace std;
class Date
{ private:
int year,mouth,date;
public:
void setD(int x,int y,int z)
{year=x;mouth=y;date=z;}
void shouD()
{cout<<date<<"/"<<mouth<<"/"<<year<<endl;}
};
int _tmain(int argc, _TCHAR* argv[])
{ int x,y,z,answer;
Date D;
cout<<"输入年月日"<<endl;
cin>>x>>y>>z;
D.setD(x,y,z);
D.shouD();
cout<<"是否想增加一天,answer:1是0否"<<endl;
cin>>answer;
if(answer)
D.setD(x,y,z+1);
D.shouD();
return 0;
}
可以达到目的,可是我想更严密点就该了下
在主函数cin>>x>>y>>z;后面和D.setD(x,y,z);前面加了
while (true)
{if(y<1||y>12)
cout<<"输入错误,请重新输入";
cin>>x>>y>>z;
}
为什么有不行了 输入了 日期 却不能输入.........
对了友友们还能提供别的方法吗 要是类的....谢了 (本人是菜鸟.............) 展开
展开全部
程序并没有大问题,但是有几点是要注意的:
1. 光判断月是不行的,还得判断日期,比如某些月的31日及握运32以上的日期,平年的2月29日都是不合法的。所以,你先用一个数组记录每个月的日期
monthDay[] = {0,31,28,31,30.....};
然后判断y在1到12之间,然后判型孙断z是否小于等于monthDay[y],闰年另外算。
2.你后加的while(true)没有退出,所以是死循环。判断输入合法之后应该break。
3.加一天不能是 setD(x,y,z+1),想想如果是1月31日加一天?那是2月1日,所以这个段租梁功能你再考虑要不要做,的确有些繁琐。
1. 光判断月是不行的,还得判断日期,比如某些月的31日及握运32以上的日期,平年的2月29日都是不合法的。所以,你先用一个数组记录每个月的日期
monthDay[] = {0,31,28,31,30.....};
然后判断y在1到12之间,然后判型孙断z是否小于等于monthDay[y],闰年另外算。
2.你后加的while(true)没有退出,所以是死循环。判断输入合法之后应该break。
3.加一天不能是 setD(x,y,z+1),想想如果是1月31日加一天?那是2月1日,所以这个段租梁功能你再考虑要不要做,的确有些繁琐。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询