C++程序,求大神解决!!!程序有BUG,运行后要多次输入,怎么解决?

2025-05-17 03:41:20
推荐回答(3个)
回答1:

#include

using namespace std;

class Date

{ public:

  void SetDate();//设置日期

  void AddDate();//日期加一天操作

  void PrintDate();//输出函数,按格式输出

  private:

  int y;

  int m;

  int d;

  };


void Date::SetDate()

{

     cout<<"请输入:"<

       cout<<"年份:"<<"(y>0)";cin>>y;

       if(y%4==0&&y%100!=0||y%400==0)

        {

         part1:

                 cout<<"月份:"<<"(0

                 cin>>m;

                 if(m<=0||m>=13)

                    goto part1;

        part2:

                if(m==2)

               {

                cout<<"日期:"<<"(0

                cin>>d;

                if(d<=0||d>=30)

                goto part2;

               }

        part3:

               if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)


         {

                cout<<"日期:"<<"(0

                cin>>d;

                if(d<=0||d>=32)

                goto part3;

         }

        part4:

              if(m==4||m==6||m==9||m==11)

            {

                cout<<"日期:"<<"(0

                cin>>d;

                if(d<=0||d>=31)

                goto part4;

            }




    }

    else

    {

         part5:

            cout<<"月份:"<<"(0

            cin>>m;

            if(m<=0||m>=13)

            goto part5;

         part7:

        if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

        {

            cout<<"日期:"<<"(0

            cin>>d;

            if(d<=0||d>=32)

            goto part7;

        }

          part8:

       if(m==2||m==4||m==6||m==9||m==11)

        {

            cout<<"日期:"<<"(0

            cin>>d;

            if(d<=0||d>=31)

            goto part8;


        }

    }


}

void Date::AddDate()

{   if(m==12&&d==30)

  {

     y=y+1;

     m=1;

     d=1;

    return;

   }

   if(y%4==0&&y%100!=0||y%400==0)

   {

      if(m==2&&d==29)

      {

        m=3;

        d=1;

        return;

      }

      if  (m==2&&d>=30)

     {

        return;


     }

 if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

 {

   if(d==31)

  {

     m=m+1;

     d=1;

       }


        if(d<31)

 d=d+1;

     return;

 }

else

{

  if(d==30)

    {

    m=m+1;

    d=1;

   return;

  }

       if(d<30)

    d=d+1;

    return;

}

   }

  else


if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

{if(d==31)

 { m=m+1;d=1;

 }

if(d<31)

d=d+1;

return;}

else

{if(d==30)

{ m=m+1;d=1;

return;}

      if(d<30)

d=d+1;

return;

}

}

  void Date::PrintDate()

   { cout<<"后一天日期为:"<

int main()

{   int v;

    Date x;

   x.SetDate();

   x.AddDate();

   x.PrintDate();


}


回答2:

好好检查你的goto语句。。估计是标签位置不对。。goto看的太乱,真心不喜欢。

回答3:

goto语句还是少用吧,