帮忙看看 程序错在哪儿了? C++

2025-05-20 01:57:12
推荐回答(4个)
回答1:

错误好多啊:-(

就拿语法错误来说吧:

void Date::decide()
{
int a,b;
do //====================这里的循环就免了吧,如果要保证y>0,在别处增加控制就可以
{
a=y%4==0&&y%100!=0;
b=y%4==0&&y%100==0&&y%400==0;
if(a||b)
{c=1;cout<<"这是闰年!"<else
{c=0;cout<<"这不是闰年!"<}while(y>0);

}

void Date::add()
{
if(c=1&&m=2&&d=29) //===============这里的条件判断中的“=”都换为“==”否则逻辑上就全错了
{m=3;d=1;}
else if(c=0&&m=2&&d=28) //==================这里:"=" -> "=="
{m=3;d=1;}
else if((m=1||m=3||m=5||m=7||m=8||m=10)&&d=31) //==================这里:"=" -> "=="
{m=m+1;d=1;}
else if(m=12&&d=31) //==================这里:"=" -> "=="
{y=y+1;m=1;d=1;}
else if((m=4||m=6||m=9||m=11)&&d=30) //==================这里:"=" -> "=="
{m=m+1;d=1;}
else
d=d+1;

cout<<"日期加上一天后:"<showDate();
}

上面的算法好“简陋”,现场给你写一个供参考(在你原先的框架下):

const int c_nDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每个月的天数,一月31天,二月28天,...

void Date::decide()
{
//判断是否为闰年
c = ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 1 : 0;

//下面照搬你原先的
if(c == 1)
cout<<"这是闰年!"< else
cout<<"这不是闰年!"<}

void Date::add()
{
//当前月份的天数
int nDaysOfMonth = (c == 1 && m == 2) ? 29 : c_nDays[m - 1];
//如果是闰年并且是2月,天数为29,否则天数为c_nDays[m-1]

if(d == nDaysOfMonth)//如果当前日期是月份的最后一天
{
d = 1;//日期=1
m++;//月份增1
}
else //如果当前日期不是月份的最后一天
d++;//日期增1

if(m > 12)//如果月份大于12(由于原先的m==12,d==31)
{
m = 1;
y++;
}

//...后面就抄你原先的了...
cout<<"日期加上一天后:"< showDate();
}

上面这样改改会不会好读一些?

回答2:

大部分问题确实出现在你指出的函数中.
1 : 你的if 和else if语句里的条件书写不正确
如:if(c=1&&m=2&&d=29) 改: if(c==1&&m==2&&d==29) 等于号的问题
2 : 你还没有把这个函数showDate()写完整 所以不能直接使用 出现在这个void Date::add() 函数末尾
3 : 没有主函数void main()
我帮你改了下 希望对你有帮助

#include
class Date
{
public:
void setDate(int day,int month,int year);
void showDate();
void add();
void decide();
private:
int m,d,y;int c;

}work;

//这个是判断是否是闰年得函数:
void Date::decide()
{
int a,b;
do
{
a=y%4==0&&y%100!=0;
b=y%4==0&&y%100==0&&y%400==0;
if(a||b)
{c=1;
cout<<"这是闰年!"<break;
}
else
{c=2;
cout<<"这不是闰年!"<break;
}
}while(y>0);

}

///错误全部在这个函数里边,高手帮帮忙!在日期上加一天!
void Date::add()
{
if(c==1&&m==2&&d==29)
{m=3;d=1;}
else if(c==0&&m==2&&d==28)
{m=3;d=1;}
else if((m==1||m==3||m==5||m==7||m==8||m==10)&&d==31)
{m=m+1;d=1;}
else if(m==12&&d==31)
{y=y+1;m=1;d=1;}
else if((m==4||m==6||m==9||m==11)&&d==30)
{m=m+1;d=1;}
else
d=d+1;

cout<<"日期加上一天后:"<}

void main()
{
}

回答3:

你的类也没有构造初始化函数呀

回答4:

没有错误提示,看代码很烦人的