Моя программа не прекратит выполнение оператора if, пока условие не будет выполнено

#c #if-statement #variables #while-loop

Вопрос:

Предполагается, что это таблица умножения от 1 до 6 по оси x и от 1 до 5 по оси y, поэтому у меня есть оператор if, который должен перейти к строке nezt, как только умножение достигнет 6, но он продолжает выполняться, даже если я сброшу условие, которое должно быть выполнено в нем.

 #include <stdio.h>
#include <stdlib.h>
int main(){
int mult = 1;
int check = 0;
int res;
while(mult != 6){


        if (check <= 6){
            res = mult * check;
            printf("%d ",res);
            check   ;
        }
        if (check > 6 ){
            printf("n ");
            check = 0;
        }

}}
 

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

1. int check = 0; объявляет новую переменную. Попробуй просто check = 0; . Ваш цикл никогда не закончится, потому mult что он никогда не меняется.

2. Попробуйте отладить свой код и проверьте значение mul

Ответ №1:

if Оператор заставляет вас выполнять или не выполнять блок.

Например, в вашем коде:

 if (check <= 6){
    res = mult * check;
    printf("%d ",res);
    check   ;
}
if (check > 6 ){
    printf("n ");
    int check = 0;
}
 

Первый блок будет выполнен , когда check <= 6 , второй блок будет выполнен check > 6 … но условие в while цикле таково mult != 5 … и вы никогда не изменяетесь mult , поэтому условие всегда верно.

Итак, в дополнение к замечанию уЗуМаКиоБаРуТо о вашей check переменной, вам также необходимо увеличить mult :

 if (check > 6 ){
    printf("n ");
    check = 0;
    mult  ;
}
 

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

1. @TedLyngmo Я понял свою ошибку, спасибо