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

一晚上也没看出来的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))