Подтвердить что ты не робот

Разница между циклами "while" и "do while"

В чем разница между циклами while и while while. Раньше я думал, что оба они абсолютно одинаковы. Затем я наткнулся на следующий фрагмент кода:

do {
        printf("Word length... ");
        scanf("%d", &wdlen);
    } while(wdlen<2);

Этот код работает отлично. Он печатает длину слова и tascans. Но когда я изменил его на

while(wdlen<2){
        printf("Word length... ");
        scanf("%d", &wdlen);
    } 

Он показывает пустой экран. Это не работает. Таким образом, существует определенная функциональная разница между двумя циклами. Может кто-нибудь объяснить это? Спасибо заранее.

EDIT: Есть ли другая разница в этих двух?

4b9b3361

Ответ 1

Цикл делать while выполняет цикл цикла один раз перед проверкой состояния while.

В то время как цикл while проверяет условие перед выполнением содержимого.

В этом случае вы ожидаете ввода пользователем с помощью функции scanf(), которая никогда не будет выполняться в цикле while, поскольку wdlen не инициализируется и может содержать только значение мусора, которое может быть больше 2.

Ответ 2

Пока: ваше условие находится в начале цикла, и позволяет никогда не входить в цикл.

Do While: ваше условие находится в конце блока цикла и делает обязательным ввести цикл хотя бы один раз.

Ответ 3

do {
    printf("Word length... ");
    scanf("%d", &wdlen);
} while(wdlen<2);
Цикл

A do-while гарантирует выполнение цикла хотя бы один раз, потому что он проверяет условие цикла ПОСЛЕ Итерации цикла. Поэтому он будет печатать строку и вызывать scanf, обновляя, таким образом, переменную wdlen.

while(wdlen<2){
    printf("Word length... ");
    scanf("%d", &wdlen);
} 

Что касается цикла while, он вычисляет условие цикла перед тем, как выполняется тело цикла. wdlen, вероятно, начинается с более чем 2 в вашем коде, поэтому вы никогда не дойдете до тела цикла.

Ответ 4

делать во время цикла управления выходом. while - контур управления входом.

Ответ 5

Разница заключается в том, когда условие оценивается. В цикле do..while условие не оценивается до конца каждого цикла. Это означает, что цикл do..while будет всегда работать хотя бы один раз. В цикле while условие оценивается в начале.

Здесь я предполагаю, что wdlen вычисляет false (т.е. больше 1) в начале цикла while, поэтому цикл while никогда не запускается. В цикле do..while он не проверяется до конца первого цикла, поэтому вы получаете ожидаемый результат.

Ответ 6

Выполнять while цикл будет выполняться по крайней мере один раз......., но while цикл сначала проверяет состояние, а затем он может или не может выполняться в зависимости от при условии.

В вашем примере wdlen может принять любое значение мусора, которое составляет > 2, поэтому , тогда как цикл никогда не будет выполнен.

тогда как делать while цикл будет ececuted и будет указывать u, чтобы ввести значение и проверить это значение в завершающем условии

Ответ 7

В то время как:

  • петля управления записью

  • условие проверяется перед выполнением цикла

  • никогда не выполняйте цикл, если условие false

  • в конце while нет точки с запятой.

Do-время:

  • цикл управления выходом

  • условие проверяется в конце цикла

  • выполняет ложное условие хотя бы один раз, поскольку условие проверяется позже

  • есть точка с запятой в конце инструкции while.

Ответ 8

Вероятно, wdlen начинается со значения >= 2, поэтому во втором случае условие цикла изначально ложно и цикл никогда не вводится.

Во втором случае тело цикла выполняется до того, как условие wdlen<2 будет проверено в первый раз, поэтому printf/scanf выполняется хотя бы один раз.

Ответ 9

Выполняет цикл while, хотя бы один раз......., но в то время как цикл сначала проверяет состояние, а затем он может или не может выполняться в зависимости от условия.  Пока: ваше условие находится в начале цикла, и позволяет никогда не входить в цикл.

Do While: ваше состояние находится в конце блока цикла и делает обязательным ввести цикл хотя бы один раз.

Ответ 10

пока проверьте условие перед выполнением операторов в цикле while.

сделать while проверить условие после выполнения инструкции внутри цикла.

источник: давайте C

Ответ 11

при проверке условия до выполнения операторов во время цикла while.

do, проверяя условие после, выполнив инструкцию внутри цикла.

Ответ 12

В WHILE сначала проверьте состояние, а затем выполните программу В цикле DO-WHILE сначала выполните программу хотя бы один раз, затем проверьте условие

Ответ 13

Разница между do while (проверка выхода) и while (проверка входа) заключается в том, что при входе делать, пока он не будет проверяться, но в то время как он сначала проверит

Пример такой:

Программа 1:

int a=10;
do{
System.out.println(a);
}
while(a<10);

//here the a is not less than 10 then also it will execute once as it will execute do while exiting it checks that a is not less than 10 so it will exit the loop

Программа 2:

int b=0;
while(b<10)
{
System.out.println(b);
}
//here nothing will be printed as the value of b is not less than 10 and it will not let enter the loop and will exit

вывод Программа 1:

10

. Программа 2:

[ничего не напечатано]

Примечание:

вывод программы 1 и программы 2 будет таким же, если мы назначим a = 0 и b = 0, а также положим a ++; и b ++; в соответствующем теле программы.

Ответ 14

Пока цикл:

while(test-condition)
{
      statements;
      increment/decrement;
}
  • Уменьшение времени выполнения и скорости
  • Контур, состоящий из записи
  • Нет фиксированного количества итераций

Do While Loop:

do
{
      statements;
      increment/decrement;
}while(test-condition);
  • Более высокое время выполнения и скорость
  • Выход из условного цикла
  • Минимальное количество итераций

Узнайте больше на эту тему здесь: Разница между while и do While Loop

Это справедливо для программирования на языке C, программирования Java и других языков, так как концепции остаются неизменными, только изменения синтаксиса.

Кроме того, еще один небольшой, но дифференцирующий фактор, который следует отметить, состоит в том, что цикл while while состоит из точки с запятой в конце условия while.

Ответ 15

Разница между конструкциями while с шага 1 по сравнению с do while заключается в том, что любые выражения внутри do {} будут выполняться хотя бы один раз, независимо от условия в предложении while().

println("\nStep 2: How to use do while loop in Scala")
var numberOfDonutsBaked = 0
do {
  numberOfDonutsBaked += 1
  println(s"Number of donuts baked = $numberOfDonutsBaked")
} while (numberOfDonutsBaked < 5)

Подробное объяснение: Объяснение Посещение: coderforevers

Ответ 16

Самое важное различие между циклом while и do-while while состоит в том, что в do-while блок кода выполняется по крайней мере один раз, даже если данное условие ложно.

Чтобы выразить это по-другому:

  • While- ваше состояние находится в начале блока цикла и позволяет никогда не входить в цикл.
  • В цикле while сначала проверяется условие, а затем выполняется блок кода, если результат теста равен true.

Ответ 17

while(wdlen<2){
  ...
 }  

Если wdlen (предполагая, что это переменная стека) не инициализируется или не назначается значение до того, как будет введен цикл while, он будет содержать все, что было в этом пространстве в памяти до (т.е. мусор). Поэтому, если значение мусора равно < 2, цикл выполняется, в противном случае - нет.

do{
 ...
}while(wdlen<2)

будет выполняться один раз, а затем проверяет условие на запуск цикла снова, и на этот раз он может завершиться успешно, если случайно wdlen, который неинициализирован, окажется меньше 2.