у меня есть ошибка в этом C ++ коде? - PullRequest
0 голосов
/ 30 мая 2018

просто хочу получить этот результат.

массив A 1,2,3,4,5,6,7,8,9,10 массив B 6,7,8,9,10,1, 2,3,4,5

for(k=1; k=10; k++)
{
    if(k<10)
    {
        a[k]=k;
        j=k+5;
        b[j] = a[k];
    }
    else
    {
        a[k] = k;
        j = k-5;
        b[j] = a[k];
    }
    printf("%d %d \n",j,k);
}

, но не может выйти из цикла за k = 10.

1 Ответ

0 голосов
/ 30 мая 2018

Вторая часть цикла for - это условие, которое оценивается после каждого цикла.В вашем случае условие k=10, возвращаемое значение которого равно 10, которое при приведении типа к типу bool всегда возвращает true.

for (init; condition; iter-expression) {
    code
}

, переводится в

{
   init 
   while ( condition ) { 
      code 
      iter_expression ; 
   }
}

Правильный кодбудет:

for(k=0; k<10; k++)
{
    if(k<5)
    {
        a[k]=k+1;
        j=k+5;
        b[j] = a[k];
    }
    else
    {
        a[k] = k+1;
        j = k-5;
        b[j] = a[k];
    }
    printf("%d %d \n",j,k);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...