"Illegal Break"时'Outputting Multiples of a Number, Input 0 or Non # to exit'

"Illegal Break" when 'Outputting Multiples of a Number, Input 0 or Non # to exit'

本文关键字:exit Input or Non to of Break Illegal Outputting Multiples Number      更新时间:2023-10-16

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

1 2 3 4 6 12

1

1

100

1 2 4 5 10 20 25 50 100

0

再见!

到目前为止,我的代码似乎运行良好。然而,我想用一个"break"来代替我使用的"die"命令。问题是,当我去写一个break而不是die时,我会遇到一个错误("非法break")。如何重写此代码以正确地使用后跟cout<lt;"再见!"?

 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;
}

您需要有某种外部循环,它会导致"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语句。

break只在循环内部工作-它在循环外部中断。您希望从主函数返回,因此请使用return

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

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