我在改变循环方面并没有错
I am not getting where i am wrong in changing loops
我正试图将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)
相关文章:
- 试图对缓存进行跨步测试,但程序并没有结束
- 睡眠:(睡眠或usleep)并没有将我的线程中的所有内容悬挂在Linux中,而是在Windows中悬挂吗?为什么
- C++ std::unique并没有显示我对它的期望
- OpenGL并没有渲染我的立方体
- Qt QGraphicsScene::setSceneRect() 实际上并没有设置场景 rect
- 为什么 C++ std::move 并没有真正对 std::initializer_list 中的元素进行强制转换?右值
- Travis和Coverity扫描 - 一切都在建立,但掩护似乎并没有运行
- 在 c++ 中读取配置文件 json 并没有停止
- 将样本代码重构为类,并没有提高过载功能的实例
- 与C++析构函数相比,C#析构函数和GC并没有真正解决问题
- mac构建有一个未定义的符号,而linux构建并没有用于相同的代码
- 两个功能并没有花时间我期望的,因为它们的复杂性很大,任何人都可以解释原因
- cuda文件并没有链接到C文件中定义的函数
- 将信号从Anthoter非过程中发送到线程,并没有发生记录堆栈
- 我正试图在我的SFML Platformer中实现双跳,但它并没有按预期的方式工作
- C++数组分配并没有真正分配
- c++中的list不是空的,但并没有可迭代的元素
- 为最简单的项目生成的EclipseCDT构建并没有正确设置include路径
- Cython PXD似乎并没有用于PYX文件
- 我在改变循环方面并没有错