我正在尝试将此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);
请告诉我我在哪里。
答案 0 :(得分:3)
第二部分的循环应该是(i <= n)
。此外,您需要初始化变量i
(在looop的开头添加i = 1
)。此外,您的第一个循环中的行;
中缺少i++
- 另请注意,这是不必要的,因为您已经在for循环中递增i
。在for循环结束时添加i++;
会使i
在每次迭代中递增两次。更正后的代码如下所示:
第一个循环(for):
for(i=1;i<=n;i++)
{
if(n%i==0)
{
cout<<" "<<i;
d++;
s+=i;
}
}
第二次循环(do-while):
i= 1;
do
{
if(n%i==0)
{
cout<<" "<<i;
d++;
s+=i;
}
i++;
}
while(i<=n);
答案 1 :(得分:1)
您的do while
循环需要以while (i < n)
而不是while (i > n)
结束。
答案 2 :(得分:1)
错误基本上在你声明i = 1的for循环中并且在do-while中你还没有声明主要的错误是你做错了条件检查do应该是(i<n)
< / p>
答案 3 :(得分:1)
使用我的编辑看下面的代码:我得到每个循环的输出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