在while循环中使用if和else

时间:2014-01-02 08:26:19

标签: c++

所有代码都运行正常,但是当其他方法实现时程序关闭,我希望代码再次请求输入,需要帮助!

 #include<iostream>
using namespace std;
int main()
{
  int total;    // this is the number which is the multiple of 10
  cout<<"Enter a number = ";
  cin>>total;

  while(total!=-1)  
  {

    if (total % 10 == 0) 
    {        
      total=total-10;
      total=total/5;
      cout<<"total= "<< total<<endl;

      cout<<"1st number= "<<total<<endl;
      cout<<"2nd number= "<<total+1<<endl;
      cout<<"3rd number= "<<total+2<<endl;
      cout<<"4th number= "<<total+3<<endl;
      cout<<"5th number= "<<total+4<<endl;
      break;    
    }
    else 
    {
      cout<<"re-enter the number"<<endl;    
      break;
    }
    return 0;
  }
}

4 个答案:

答案 0 :(得分:4)

从其他原因中删除break;并添加cin>>total;

else 
{
    cout<<"re-enter the number"<<endl;  
    cin>>total;

}

答案 1 :(得分:2)

只需从break;子句中删除else语句即可。 break;导致最近的封闭循环(或开关)退出,在您的情况下是while()循环。

此外,在这种情况下,您将不得不再次要求输入,因此请在total分支中再次阅读else

答案 2 :(得分:0)

通常,break;会导致程序控制退出包含break的最内层循环。因此,在您的情况下,它会导致while完成。

我认为您将if块与switch的语法混淆。在switch块中,break确实是必要的,以避免单个case语句的默认跟进行为。

您可能还需要重新定位return 0;语句:这将导致程序退出,将0返回给命令shell。

答案 3 :(得分:0)

不要使用break,而应使用continue,这将转到循环的顶部。循环中也有一个return语句,因此continue将跳过这个。要么就是这样,要么您也必须删除return,并且还需要main的返回。