帮忙看看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,能给解释一下吗?发消息吧给我,我也耗不动了,明天吧,再追点分给你。
展开
 我来答
liujq007
2009-01-03 · TA获得超过942个赞
知道大有可为答主
回答量:1035
采纳率:0%
帮助的人:1059万
展开全部
程序执行有问题?我完全没问题啊~~好了,不和你耗了,睡觉了~~,程序没问题~~

#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();
}
全雅琴aB
2009-01-03
知道答主
回答量:21
采纳率:0%
帮助的人:14.5万
展开全部
protected: 去掉就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式