首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这段程序 哪里有有关问题 麻烦大神改一上 多谢啦

2013-03-06 
这段程序 哪里有问题麻烦大神改一下谢谢啦为什么输入2012.12.31得到负数?#include iostreamusing namesp

这段程序 哪里有问题 麻烦大神改一下 谢谢啦
为什么输入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;

热点排行