难以理解C ++上的Do-While循环

问题描述

我用C ++编程已经花了几周的时间,而且我很难理解Do-While循环。具体来说,我不理解这段代码

#include<iostream>
using namespace std;

int main()
{
  int sum = 0;

int y = 0;

do

{

   for ( int x = 1; x < 5; x++)
         sum = sum + x;

   y = y+1;

} while ( y < 3);

cout << sum << endl;

return 0;
}

及其结果:

30

我不知道它是如何产生30的,如果我能对此特定代码块进行解释,那将是很好的。谢谢。

解决方法

由此可见,代码进入do块,它看到for循环,执行该循环4次,然后继续递增y,然后该过程完成了2次以上。

    
    Condition
    if position=="Staff":
        emp.dayWorked=input("Day worked in a month:")
        //error
        emp.pay()
        emp.display()
    elif position=="Executive":
        exe.dayWorked=input("Day worked in a month:")
        exe.pay()
        emp.display()
    elif position=="Clerks":
        clk.dayWorked=input("Day worked in a month:")
        clk.addHours=input("Overtime:")
        clk.pay()
        emp.display()
,

您的程序执行10 + 10 + 10,因为您编写了程序,所以它执行的是小于5的整数之和。

您说在y

,

do ... while (cond)循环以这种方式工作,即条件cond在循环的第一次迭代之后被检查(因此它至少经历了一次迭代)。当您首先进入该循环时,会遇到for循环,该循环将范围从1到4的所有整数相加。外循环第一次迭代后sum的结果为10,值{{1} }现在为1,因此我们进入下一个迭代。再次,我们对内循环中的所有数字求和,并将结果加到y的前一个结果(为10)中,现在的结果为20。我们将sum递增,因此为2,条件{ {1}}仍然成立,因此我们进入下一个迭代。同样,我们对数字求和,y现在为30,并且我们递增y < 3,所以它为3。sum循环的条件不再成立,因为y现在为3,它不小于3。这时do ... while为30,并打印在标准输出上。