Я работал с небольшим кодом для добавления члена в один массив, когда я попытался внести некоторые изменения в код, я понял, что ожидаемый результат был неправильным (измененный массив не отображается).Отладка Я увидел, что объявление int i
как глобальной переменной вместо цикла for
дает ожидаемый результат.
Однако я обнаружил, что проблема была связана с переменной n
для некоторыхпричина заключается в изменении внутри while (j >= k)
, когда переменная int i
объявлена как инициализация цикла for;но я не могу понять, почему это происходит.Если кто-то может помочь мне понять, что и почему это происходит, я буду очень благодарен
Это мой код, который производит ожидаемый вывод:
#include <stdio.h>
int main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = sizeof(LA)/sizeof(LA[0]);
int j = n;
int i;
printf("n = %d\n",n);
printf("The original array elements are :\n");
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
printf("n = %d\n",n);
n = n + 1;
printf("n = %d\n",n);
while( j >= k) {
LA[j+1] = LA[j];
j = j - 1;
}
printf("n = %d\n",n);
LA[k] = item;
printf("The array elements after insertion :\n");
printf("n = %d\n",n);
for(i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
Это мой ожидаемый вывод:
n = 5
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
n = 5
n = 6
n = 6
The array elements after insertion :
n = 6
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 10
LA[4] = 7
LA[5] = 8
Это мой код, который НЕ дает ожидаемого вывода:
#include <stdio.h>
int main() {
int LA[] = {1,3,5,7,8};
int item = 10, k = 3, n = sizeof(LA)/sizeof(LA[0]);
int j = n;
printf("n = %d\n",n);
printf("The original array elements are :\n");
for(int i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
printf("n = %d\n",n);
n = n + 1;
printf("n = %d\n",n);
while( j >= k) {
LA[j+1] = LA[j];
j = j - 1;
}
printf("n = %d\n",n);
LA[k] = item;
printf("The array elements after insertion :\n");
printf("n = %d\n",n);
for(int i = 0; i<n; i++) {
printf("LA[%d] = %d \n", i, LA[i]);
}
}
Это мой неожиданный вывод:
n = 5
The original array elements are :
LA[0] = 1
LA[1] = 3
LA[2] = 5
LA[3] = 7
LA[4] = 8
n = 5
n = 6
n = 0
The array elements after insertion :
n = 0
Почему переменная n
был изменен в зависимости от объявления int i
?