#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;
}