这段程序 哪里有问题 麻烦大神改一下 谢谢啦
为什么输入2012.12.31 得到负数?
#include <iostream>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
int febDays;
public:
static int month_day[13];
Date(int y, int m, int d)
{
year = y;
month = m;
day = d;
if (isLeapYear()) febDays = 29;
else febDays = 28;
}
bool isLeapYear()
{
if ((year%4==0 && year%100!=0) || (year%400==0)) return true;
else return false;
}
bool validate()
{
if ((month > 0 && day > 0
&& month < 13 && day <= month_day[month])
|| (month == 2 && day > 0 && day <= febDays))
return true;
return false;
}
int theDay()
{
int iA,febDays,countDays = day;
if (month == 1) return day;
else if (month == 2) return (countDays + 31);
else
{
for(iA = 1; iA < month; iA++)
countDays += month_day[iA];
return (countDays + febDays);
}
}
};
int Date::month_day[] = {0,31,0,31,30,31,30,31,31,30,31,30,31};
int main()
{
int iY,iM,iD;
cout<<"输入年:";
cin>>iY;
cout<<"输入月:";
cin>>iM;
cout<<"输入日:";
cin>>iD;
Date date(iY, iM, iD);
if (date.validate()) cout<<"该日是本年第"<<date.theDay()<<"天"<<endl;
return 0;
}
c++??date
[解决办法]
你发了两题呢。
原因可能是:
在 theDay()里
int iA,febDays,countDays = day;
这里定义了 febDays!
和类变量冲突了,作用域决定了在采用这个未赋值的变量。
把 theDay里的这句改成:
int iA,countDays = day;