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

一晚上也没看出来的if嵌套异常

2012-03-05 
一晚上也没看出来的if嵌套错误intCheckDate(structdata*today){if((today- month 12)||(today- month1

一晚上也没看出来的if嵌套错误
int   CheckDate(struct   data   *today)
{
    if((today-> month   > 12)   ||   (today-> month   <   1))
        {
            cout   < <   "月份输入错误请重来! "   < <   "\n ";
            return   0;
        }
    else
        {
            if(today-> month   ==2)
            {
              if   (IsLoopYear(today)   ==1)
              {
                if((today-> day   >   29)   ||   (today-> day   <   1))
                {
                    cout   < <   "日期输入错误请重来! "   < <   "\n ";
                    return   0;
                }
                else
                {
                      if((today-> day   >   28)   ||(today-> day   <   1))
                      {
                          cout   < <   "日期输入错误请重来! "   < <   "\n ";
                          return   0;
                      }
                      else   return   1;
              }
            }
            else
            {

            if((today-> month   ==   1)   ||   (today-> month   ==   3)   ||(today-> month   ==   5)||(today-> month   ==   7)||(today-> month   ==   8)||(today-> month   ==   10)||(today-> month   ==   12))
            {if((today-> day   >   31)   ||(today-> day   <   1))
            {
                    cout   < <   "日期输入错误请重来! "   < <   "\n ";
                    return   0;
            }
            else   return   1;
            }
            else
            {
           
            if((today-> month   ==   4)   ||   (today-> month   ==   6)   ||(today-> month   ==   9)||(today-> month   ==   11))


            if((today-> day   >   30)   ||(today-> day   <   1))
            {
                    cout   < <   "日期输入错误请重来! "   < <   "\n ";
                    return   0;
            }
            else   return   1;
            }
            }
            }
            }
        }

[解决办法]
int CheckDate(struct data *today)
{
//daysPerMonth[0]: 表示润年二月的天数
//daysPerMonth[i]: 表示第i月的天数(i> =1 && i <=12)
static int daysPerMonth[] =
{29, 31, 28, 31, 30, 31,30, 31, 31, 30, 31, 30, 31};

if (today-> month> 12 || (today-> month <1) {
cout < < "月份输入错误请重来! " < < "\n ";
return 0;
}

if (today-> day <1) {
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}

int pseudoMonth = today-> month;
if (IsLoopYear(today)==1 && pseudoMonth == 2) pseudoMonth = 0;


if ( (today-> day) > daysPerMonth[pseudoMonth]) {
cout < < "日期输入错误请重来! " < < "\n ";
return 0;
}

return 1;
}

热点排行