Осуществить циклический сдвиг элементов массива вправо на одну позицию - C (СИ)
Формулировка задачи:
Дан массив размера N.Осуществить циклический сдвиг элементов массива вправо на одну позицию.
Помогите сообразить ввод,ну или своё предложения решения задачи!Спасибо!
int a[N];
int save;
save = a[N-1];
for (int j = N-1; j > 0; j--)
{
a[i] = a[i-1];
}
a[0] = save;Решение задачи: «Осуществить циклический сдвиг элементов массива вправо на одну позицию»
textual
Листинг программы
#include <stdio.h>
int main() {
unsigned i, n;
int temp;
int* a;
scanf("%u", &n);
a = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
temp = a[0];
for (i = 0; i < n; i++)
a[i] = a[i + 1];
a[n - 1] = temp;
for (i = 0; i < n; i++)
printf("%d", a[i]);
free(a);
}
Объяснение кода листинга программы
В этом коде осуществляется циклический сдвиг элементов массива вправо на одну позицию.
- Сначала пользователю предлагается ввести количество элементов в массиве, используя функцию scanf.
- Затем выделяется память под массив с помощью функции malloc.
- Затем происходит заполнение массива элементами с помощью функции scanf.
- Далее, с помощью цикла for, происходит перенос всех элементов массива на одну позицию вправо, начиная с первого элемента.
- Последний элемент обнуляется и помещается в начало массива.
- Затем с помощью цикла for выводятся все элементы массива на экран.
- В конце программы освобождается выделенная память с помощью функции free.