Знатоки языка Си помогите! В чем смысл кода, а именно цикла 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]);
}
Ответы на вопрос
Ответил alexshor
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 год назад
История,
6 лет назад
Литература,
6 лет назад
Алгебра,
8 лет назад