这段代码有问题吗

来源:百度知道 编辑:UC知道 时间:2024/06/27 14:21:38
#include <iostream>
using namespace std;
int main()
{
int i,j;
l1: for (i=3;i<1000;i+=2);
{
for(j=3;j<i;j+=2);
{
if(i%j==0)
{goto l1;}
}
cout<<i<<"";
}
}
如果i%j==0,程序跳到i循环之前,如果i%j!=0输入i
为什么会造成死循环
看起来好象是合理的

这是一个找素数的程序。
1)首先for语句后面的' ; '错误。应去掉。
2)goto l1造成死循环。应换成break语句。并加入一个内循环出口的判定语句。
如下:
for (i=3;i<1000;i+=2)
{
for(j=3;j<i;j+=2)
{
if(i%j==0)
{break;}
}
if(j >= i) cout<<i<<"";
}

补充回答:goto l1将使i复位成3,输出是:357357...for语句中的i是由语句本身控制的,goto是说程序从l1开始执行,for语句将重新初始化。