了解为什么此do-while循环在“ do”部分中的代码块重复的地方重复

时间:2019-01-15 16:40:27

标签: c++ do-while

我不明白当用户输入“ Y”时此循环如何重复。所有的代码都在“ do”部分;重复一次吗?之后,while语句只是一个返回语句。

int main()
{   
   int score1, score2, score3; //three scores
   double average;             // Average score
   char again;                 // To hold Y or N input

   do
   {
       /Get three Scores.
       cout << "Enter 3 scores and i will average them: ";
       cin >> score1 >> score2 >> score 3;

       //calculate and display the average
       average = (score1 + score2 + score 3)/3.0;
       cout << "The average is " << average << :.\n;

       // Does the user want to average another set?
       cout << "Do you want to average another set? (Y/N) ":
       cin >> again;
   } while(again == 'Y' || again == 'y');

    return 0;   

}

教科书的解释太简短了,没有点击我的脑袋。谢谢您的宝贵时间。

5 个答案:

答案 0 :(得分:2)

您正在查看的是 do-while循环。它是与 while循环不同的构造。

在cppreference.com上,重点是我的:


'while' loop

while ( <condition> )
{
    // code
}
  

重复执行一条语句,直到condition的值变为false。 测试在每次迭代之前进行。


'do-while' loop

do
{
     // code
} while ( <condition> );
  

重复执行一条语句,直到expression的值变为false。 测试在每次迭代之后进行。

答案 1 :(得分:2)

这样做之后,您就不会有while循环了。您在任何地方都没有while循环! while只是终止do循环的一种方式。

答案 2 :(得分:1)

循环的主体从<font-awesome-icon icon="spinner" size="3x" spin fixed-width> </font-awesome-icon> 之后的{开始,到do之前的}结束。

似乎您熟悉while循环,现在您只需要了解while循环的结构稍有不同(条件在主体之后,而不是在主体之后)。

示例:

do-while

请注意,它们并不等效,通常根据进行迭代之前或之后检查条件是否更自然来选择一个或多个。

答案 3 :(得分:0)

我将其简化为相关部分,并使用伪代码:

l1 = {k: [e.get(k) for e in your_list][i::4] for i, k in enumerate(['a', 'b', 'c', 'd'])}
l1
>> 
{'a': [32, 544, 42, 2145],
 'b': [2541, 44, 655, 450],
 'c': [530, 54, 459, 342],
 'd': [55, 454, 665, 186]}

关键是循环运行直到变量“再次”为Y或y。

然后根据用户输入再次在循环内设置变量。

将这两件事放在一起,您会发现循环一直运行到用户输入Y或y为止。

答案 4 :(得分:0)

  

我知道我缺少了一些东西,但是while循环中什么也没有,   输入“ Y”如何使它返回?做应该发生一次   然后执行while循环。我不明白是什么   使循环返回

while关键字需要一个条件来确定是否应执行其体内的代码。在您的情况下,您已经给出了条件,如果变量again设置为'y'或'Y',则应执行循环。

} while(again == 'Y' || again == 'y');

有关whiledo-while循环结构的详细说明,请参见此link