帮忙看看C++程序,哪错了?
全部程序如下:#include<iostream.h>classDate{public:voiddisplay(){cout<<day<<"/"<<month<<"/"<...
全部程序如下:
#include <iostream.h>
class Date
{
public:
void display()
{
cout<<day<<"/"<<month<<"/"<<year<<endl;
}
void addoneday()
{
if(legal(year,month,day+1))
day++;
else if(legal(year,month+1,1))
month++,day=1;
else if(legal(year+1,1,1))
year+1,month=1,day=1;
}
void setday(int y,int m,int d)
{
if (legal(y,m,d))
day=d,month=m,year=y;
}
protected:
bool legal(int y,int m,int d)
{
if(y>9999||y<1||d<1||m<1||m>12)
return false;
int daylimit=31;
switch(m)
case 4:case 6:case 9:case 11:daylimit--;
if(m=2)
daylimit=isleapyear(y)?29:28;
return(d>daylimit)? false:true;
}
bool isleapyear(int y)
{
return !(y%4)&&(y%100)||(y%400);
}
int year;
int month;
int day;
};
void main()
{
int year=1976,month=9,day=30;
Date date;
date.setday(year,month,day);
date.display();
date.addoneday();
cout<<"after add one day:"<<endl;
date.display();
}
主要问题是执行的结果不对。
少了一个“=”,是我打错了,还是不行。
对闰年的判断少打了一个“!”应该是 return !(y%4)&&(y%100)||!(y%400); 这是没问题的
不过这不应该影响程序的执行,我输入的是9月。怪了,多执行了几次居然过了,为什么?
嘿嘿!不和我耗了啊,那就多谢了,顺便问句:变量在什么情况下应该定义成PUBLIC,PROTECTED和PRIVATE,能给解释一下吗?发消息吧给我,我也耗不动了,明天吧,再追点分给你。 展开
#include <iostream.h>
class Date
{
public:
void display()
{
cout<<day<<"/"<<month<<"/"<<year<<endl;
}
void addoneday()
{
if(legal(year,month,day+1))
day++;
else if(legal(year,month+1,1))
month++,day=1;
else if(legal(year+1,1,1))
year+1,month=1,day=1;
}
void setday(int y,int m,int d)
{
if (legal(y,m,d))
day=d,month=m,year=y;
}
protected:
bool legal(int y,int m,int d)
{
if(y>9999||y<1||d<1||m<1||m>12)
return false;
int daylimit=31;
switch(m)
case 4:case 6:case 9:case 11:daylimit--;
if(m=2)
daylimit=isleapyear(y)?29:28;
return(d>daylimit)? false:true;
}
bool isleapyear(int y)
{
return !(y%4)&&(y%100)||(y%400);
}
int year;
int month;
int day;
};
void main()
{
int year=1976,month=9,day=30;
Date date;
date.setday(year,month,day);
date.display();
date.addoneday();
cout<<"after add one day:"<<endl;
date.display();
}
主要问题是执行的结果不对。
少了一个“=”,是我打错了,还是不行。
对闰年的判断少打了一个“!”应该是 return !(y%4)&&(y%100)||!(y%400); 这是没问题的
不过这不应该影响程序的执行,我输入的是9月。怪了,多执行了几次居然过了,为什么?
嘿嘿!不和我耗了啊,那就多谢了,顺便问句:变量在什么情况下应该定义成PUBLIC,PROTECTED和PRIVATE,能给解释一下吗?发消息吧给我,我也耗不动了,明天吧,再追点分给你。 展开
2个回答
展开全部
程序执行有问题?我完全没问题啊~~好了,不和你耗了,睡觉了~~,程序没问题~~
#include <iostream>
using namespace std;
class Date
{
public:
void display()
{
cout<<day<<"/"<<month<<"/"<<year<<endl;
}
void addoneday()
{
if(legal(year,month,day+1))
day++;
else if(legal(year,month+1,1))
month++,day=1;
else if(legal(year+1,1,1))
year+1,month=1,day=1;
}
void setday(int y,int m,int d)
{
if (legal(y,m,d))
day=d,month=m,year=y;
}
protected:
bool legal(int y,int m,int d)
{
if(y>9999||y<1||d<1||m<1||m>12)
return false;
int daylimit=31;
switch(m)
case 4:case 6:case 9:case 11:daylimit--;
if(m==2)////////////////////m==2,不是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;
}
int year;
int month;
int day;
};
void main()
{
int year=1976,month=9,day=30;
Date date;
date.setday(year,month,day);
date.display();
date.addoneday();
cout<<"after add one day:"<<endl;
date.display();
}
#include <iostream>
using namespace std;
class Date
{
public:
void display()
{
cout<<day<<"/"<<month<<"/"<<year<<endl;
}
void addoneday()
{
if(legal(year,month,day+1))
day++;
else if(legal(year,month+1,1))
month++,day=1;
else if(legal(year+1,1,1))
year+1,month=1,day=1;
}
void setday(int y,int m,int d)
{
if (legal(y,m,d))
day=d,month=m,year=y;
}
protected:
bool legal(int y,int m,int d)
{
if(y>9999||y<1||d<1||m<1||m>12)
return false;
int daylimit=31;
switch(m)
case 4:case 6:case 9:case 11:daylimit--;
if(m==2)////////////////////m==2,不是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;
}
int year;
int month;
int day;
};
void main()
{
int year=1976,month=9,day=30;
Date date;
date.setday(year,month,day);
date.display();
date.addoneday();
cout<<"after add one day:"<<endl;
date.display();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询