我在改变循环方面并没有错

I am not getting where i am wrong in changing loops

本文关键字:并没有 方面 循环 改变      更新时间:2023-10-16

我正试图将for循环转换为do-while:

 for(i=1;i<=n;i++)
 {
 if(n%i==0)
   { cout<<"  "<<i;
     d++;
     s+=i;
   }
 i++
 }

我把这个变成了这个。但我没有得到正确的输出

 do
 {
   if(n%i==0)
   { cout<<"  "<<i;
     d++;
     s+=i;
   }
   i++;
 }
 while(i>n);

请告诉我我在哪里错了。

第二部分的循环应该是while (i <= n)。此外,还需要初始化变量i(在looop的开头添加i = 1)。此外,在第一个循环的i++行中缺少一个;,请注意,这是不必要的,因为您已经在for循环中递增了i。在for循环的末尾添加i++;会使i在每次迭代中增加两次。更正后的代码如下所示:

第一个循环(用于):

for(i=1;i<=n;i++)
{
     if(n%i==0)
    { 
        cout<<"  "<<i;
        d++;
        s+=i;
    }
}

第二个循环(执行期间):

i= 1;
do
{
    if(n%i==0)
    { 
        cout<<"  "<<i;
        d++;
        s+=i;
    }
    i++;
}
while(i<=n);

请参阅下面的代码和我的编辑:我得到了每个循环的输出1 2 5 10,其中n任意设置为10。

    int i = 0;
    int n = 10;
    int d = 0;
    int s = 0;
for(i=1;i<=n;i++)
 {
 if(n%i==0)
   { 
     cout<<"  "<<i;
     d++;
     s+=i;
   }
 //i++; //commented this out. i already increments
 }
cout << endl;
    // reset variables for do while loop
    i = 1;
    n = 10;
    d = 0;
    s = 0;
do
 {
   if(n%i==0)
   { cout<<"  "<<i;
     d++;
     s+=i;
   }
   i++;
 }
 while(i<=n);  //changed condition

您的do while循环需要以while (i < n)而不是while (i > n)结束。

错误基本上在for循环中,您已经声明i=1,在do中,当您没有声明时,主要错误是您在do中进行了错误的条件检查,而它应该是(i<n)