Знатоки языка Си помогите! В чем смысл кода, а именно цикла for a[i]=a[j];
a[j]=0;
j++;,
Задание: Преобразовать массив таким образом, чтобы сначала располагались все элементы
равные нулю, а потом все остальные.
Код:
#include
#include
int main(void)
{
int j=0, i, S=0, a[5] = {5, 6, 2, 0, 3};
for (i=0; i<5; i++)
{
if (!a[i])
{
a[i]=a[j];
a[j]=0;
j++;
}
}
for (i=0; i<5; i++) printf(" %d", a[i]);
}
Ответы
Ответ дал:
0
Ответ:
Объяснение:
int main()
{
// j - переменная заведена для подсчета нулевых элементов - начальное значение 0
int j = 0, i, S = 0, a[5] = { 5, 6, 2, 0, 3 };
for (i = 0; i < 5; i++) // этот цикл перебирает все элементы массива
{
if (!a[i]) // запись равносильна "if (a[i] == 0)": если этот элемент нулевой
{
a[i] = a[j]; // запоминаем в текущий элемент значение, которое идет сразу за последним нулевым элементом
a[j] = 0; // а его обнуляем, т.е. как бы меняем значения в позициях i и j местами
j++; // увеличиваем количество нулевых элементов
}
}
for (i = 0; i < 5; i++) printf(" %d", a[i]);
return 0;
}
Вас заинтересует
1 год назад
1 год назад
2 года назад
2 года назад
8 лет назад
8 лет назад
9 лет назад