【问题标题】:"Illegal Break" when 'Outputting Multiples of a Number, Input 0 or Non # to exit''输出数字的倍数,输入0或非#退出'时“非法中断”
【发布时间】:2014-10-12 05:41:50
【问题描述】:

初级程序员。我的任务是输出一个正无符号数的倍数,并使用 0 或非 # 来退出程序。程序运行示例:
12

1 2 3 4 6 12

1

1

100

1 2 4 5 10 20 25 50 100

0

再见!

到目前为止,我的代码似乎运行良好。但是,我想使用“break”而不是“die”命令。问题是当我去写一个中断而不是一个骰子时,我遇到了一个错误(“非法中断”)。如何重写此代码以正确使用“break”,后跟 cout

 int main(){
unsigned i, n;
cout <<"Positive #: ";
if ( !(cin >>n ) || n == 0 ) die ( "Goodbye!" );
for ( i = 1; i <= n; i++ ){
    if ( n%i == 0  )
        cout <<i <<" "; 
        }
cout <<endl;
}

【问题讨论】:

    标签: c++ loops break


    【解决方案1】:

    您需要有某种外部循环导致“Positive #:”行连续输出,以便用户可以为您提供多个条目。 使用您当前的设置,用户应该只能输入一个数字,然后您的程序应该终止(这不是所需的行为)。

    int main(){
    unsigned i, n;
    while(true)
    {
        cout <<"Positive #: ";
        if ( !(cin >>n ) || n == 0 ) break;
        for ( i = 1; i <= n; i++ ){
            if ( n%i == 0  )
                cout <<i <<" "; 
             }
    }
    cout << "Goodbye!";
    cout <<endl;
    }
    

    或者,您可以重构代码以在循环结束时打印查询(在循环开始之前打印一次),并将“if”中的条件移动到“while”,在这种情况下,您不会甚至需要使用break语句。

    【讨论】:

      【解决方案2】:

      break 仅在循环内有效 - 它在循环外中断。你想从你的主函数返回,所以使用return

      当然,return 不会打印任何东西,所以你最好这样做:

      if( ... exit condition... )
      {
         cout << "Goodbye!" << endl;
         return 0;
      }
      

      【讨论】:

      • 嗯,我试过这个,但收到一个错误。无符号 i, n; cout >n ) || n == 0 ){ cout
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多