2016-08-11 4 views
-3

Я хочу знать, почему при запуске этого кода я получаю бесконечный вывод. Вот код:Код работает навсегда в C - что я сделал не так?

#include <stdio.h> 

int main(){ 

    int num; 
    printf(" enter a number\n"); 
    scanf(" %d", &num); 
    for(num = 0 ; num <= 10 ; num+=num){ 
     printf(" %d",num); 
    } 

    return 0; 
} 
+0

'for (int i = 0; i user3386109

+0

Это другой вопрос. После того как вы выясните этот вопрос и примите ответ, вы можете начать новый вопрос о печати таблицы. Но сначала попробуйте сами. Подсказка: вам нужно два цикла 'for'. Внешний цикл подсчитывает строки в таблице, а внутренний цикл подсчитывает столбцы. – user3386109

+0

Когда вы печатаете 'num' в цикле: вы наблюдали что-нибудь подозрительное? Что говорит наблюдение, если условие завершения для 'for' (2-е выражение в круглых скобках)? – Olaf

ответ

2

num+= num никогда не приращением num. Он всегда добавляет 0 в 0. Также num = 0 в for петля перекрывает ввод пользователя для num.

1

num + = num всегда добавляет от 0 до 0 (num) и, следовательно, значение num никогда не увеличивается. Таким образом, num всегда меньше 10, и цикл никогда не выходит.

0

в то время как Num ++ приведет к NUM> 0, num += num с начальным num = 0 что вы получаете num += 0, и цикл никогда не достигает 10. Просто использовать num++

0
int num; 
printf(" enter a number\n"); 
scanf(" %d", &num); 
for(num = 0 ; num <= 10 ; num++){ 
    printf(" %d",num); 
    } 

Num + = Num смысл Num = Num + Num и num начинаются с 0, так что num = 0 всегда, так что идите в бесконечный цикл. замените его num++.

Смежные вопросы