если условие в цикле for - PullRequest
       1

если условие в цикле for

0 голосов
/ 15 августа 2011

Эта программа выводит 1. Я не мог понять, как она выводит 1, так как цикл for завершится с ошибкой на a[2][3], который содержит значение 12. Таким образом, 12 будет присвоено k, и выходной сигнал должен быть 12.

#include<stdio.h>

int main()
{
    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int i,j,k=99;
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            if(a[i][j]<k)
            {
                k=a[i][j];
                printf("%d\n",k);
            }
        }
    }
    printf("Res:%d\n",k);
    return 0;
}

Ответы [ 3 ]

2 голосов
/ 15 августа 2011

В первый раз в цикле if оценивается как [0] [0]

1 голос
/ 15 августа 2011

Некоторые комментарии:

Вызов переменной k ничего не говорит нам о том, для чего вы ее используете. Если бы вы назвали это arrayMin, тогда это было бы понятнее для нас. Использование i и j для индексов цикла вполне допустимо.

Назначение k=99 делает предположения о содержимом массива и, следовательно, делает хрупкий код. Лучше не делать предположений и начинать с присвоения arrayMin = a[0][0]

Ваша программа достаточно мала и проста, чтобы вы могли самостоятельно выполнить ее на бумаге. Это помогло бы вам увидеть, что происходит. Также помог бы отладчик для пошагового прохождения.

1 голос
/ 15 августа 2011

В этой строке вы меняете значение K

к = а [I] [J]; * +1004 *

И первое изменение, которое вы запустите, изменит k на 1, поэтому второе изменение не получится. При каждом изменении ваше k будет на единицу меньше, чем должно быть, если оператор сработает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...