не удалось определить проблему с этим кодом

#c #loops #while-loop #infinite-loop

Вопрос:

Я пытаюсь напечатать от 1 до 21. Я использовал цикл while, но он работает бесконечно.

  #include<stdio.h>
    int main(){
       int i=0;
       while(i<20)
         printf(":%d",i 1);
    return 0;
    }
 

Комментарии:

1. У вас есть условие цикла i < 20 , но нигде внутри цикла вы не изменяете i . i Внутри цикла нет никакого назначения. Так i что никогда не изменит свое значение с 0 , что должно быть довольно ясно из вывода. Может быть, вместо этого вам следует использовать for петлю?

2. i . i никогда не меняется.

3. ваш не увеличивается.

4. вам нужно увеличивать значение i с каждой итерацией. В противном случае люф будет работать бесконечно долго.

Ответ №1:

i 1 не изменяет переменную i. Это выражение будет отображать только результат i 1. Чтобы фактически увеличить переменную, попробуйте вместо этого использовать эту строку.

 printf(":%d",  i);
 

Комментарии:

1. Может i быть, это было бы более уместно

Ответ №2:

Если вы хотите печатать числа до 21, то это условие цикла

 while(i<20)
 

это неверно. Ты должен хотя бы написать

 while(i<21)
 

принимая во внимание выражение i 1 в вызове printf

 printf(":%d",i 1);
 

Цикл бесконечен, потому что в цикле переменная i не изменяется и всегда остается равной 0 той, которая была задана изначально.

 int i=0;
 

Вы могли бы написать цикл следующим образом

 int i = 0;

while( i   < 21 )
{
    printf(":%d", i);
}
 

Или

 while( i < 21 )
{
    printf(":%d",   i);
}
 

Первый цикл более удобочитаем.

Или если вы хотите вывести числа до 20, то цикл будет выглядеть так

 int i = 0;

while( i   < 20 )
{
    printf(":%d", i);
}
 

Или

 while( i < 20 )
{
    printf(":%d",   i);
}
 

Ответ №3:

Вы не увеличиваете стоимость i , поэтому ничего не произойдет. Здесь i это увеличивается на 1.

 #include<stdio.h>
int main(){
   int i=0;
   while(i<=20){
       printf(":%d",i 1);
       i  ;
   }
   return 0;
}