2015-10-23 12 views
2

Я пытаюсь перевести следующий цикл в цикл while и do-while, но по какой-то причине код разбивается, прежде чем он когда-либо попадает в настоящий цикл.Почему эти продолжения не работают в моих циклах?

Вот что я пытаюсь повторить:

#include <stdio.h> 

int main(void) 
{ int y; 

    for (y=1;y<10; y++) 
    { if (y == 5) 
     continue; 
    printf("%2d", y); 
    } 

    printf("\ny=%2d\n",y); 

    return 0; 
} 

Вот мои попытки сделать эквивалент в то время как и делать-то время петли:

#include <stdio.h> 

int main(void) 
{ 
    int y; 

    y = 1; 
    while(y < 10) // here's my while loop 
    { 
     if(y == 5) 
     continue; 
     printf("%2d", y); 
     y++; 
    } 

    printf("\ny=%2d\n",y); 

/******************** 
... and my do-while 
********************/ 
    y = 1; 
    do 
    { 
     if (y == 5) 
     continue; 
     printf("%2d", y); 
     y++; 
    } while(y < 10); 

    printf("\ny=%2d\n",y); 

    return 0; 
} 

Где я ошибся?

+0

Вы хотите узнать, как использовать отладчик, чтобы вы могли последовательно отслеживать свой код, проверяя значение всех соответствующих переменных и их изменение. – alk

ответ

5

В цикле forcontinue переходит к третьему выражению оператора for, который увеличивает счетчик.

В петле whilecontinue немедленно переходит к следующей итерации, пропуская приращение.

3

Если в вашем коде выполнено условие, вы не увеличиваете переменную, и вы застреваете в бесконечном цикле. Попробуйте

#include <stdio.h> 

int main(void) 
{ 
    int y; 

    y = 0; 
    while(++y < 10) // here's my while loop 
    { 
     if(y == 5) 
     continue; 
     printf("%2d", y); 
    } 

    printf("\ny=%2d\n",y); 

или ему подобные.

+0

Вам нужно удалить y ++ – Jackson

+0

Чтобы предотвратить такую ​​ошибку, OP мог бы использовать цикл 'for' вместо – Arc676

+0

@Jackson: Ooops, исправлено! – Charles