Из последовательности чисел выбрать нули и подсчитать их число, а оставшиеся числа вывести в одну строку - C (СИ)
Формулировка задачи:
Из последовательности чисел а1, а2, ..., аn выбрать числа, равные
нулю, подсчитать их число, а оставшиеся числа вывести в одну
строку
Решение задачи: «Из последовательности чисел выбрать нули и подсчитать их число, а оставшиеся числа вывести в одну строку»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n;
int i;
int cnt = 0;
int *arr;
puts("Enter n..");
scanf("%d", &n);
arr = (int *) malloc(sizeof(int) * n);
for(i = 0; i < n; ++i)
{
printf("\narr[%d] = ", i);
scanf("%d", &arr[i]);
}
puts("");
for(i = 0; i < n; ++i)
{
if(arr[i])
printf("%d ", arr[i]);
else
++cnt;
}
if(n)
printf("\nCount = %d\n", cnt);
free(arr);
printf("\nPress any key to continue . . . ");
getchar();
getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
n- количество чисел в последовательностиi- счётчик для цикловcnt- счётчик нулейarr- массив для хранения чисел
- Запрошен ввод количества чисел и сохранён в переменной
n. - Выделен память под массив
arrс помощьюmalloc. - В цикле заполнен массив
arrчислами, которые введены пользователем. - В цикле выведены все числа из массива
arr, при этом если число равно нулю, то увеличено значение переменнойcnt. - Выведено количество нулей.
- Освобождён память, выделенную под массив
arr, с помощьюfree. - Выведено сообщение
Press any key to continue . . .и ожидается нажатие клавиши.