Сдвинуть все элементы массива на одну позицию вправо (используя указатели) - C (СИ)
Формулировка задачи:
Здравствуйте. Покажите, пожалуйста, как сдвинуть все элементы массива на одну позицию вправо, используя указатели?
Решение задачи: «Сдвинуть все элементы массива на одну позицию вправо (используя указатели)»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#define N 10
int main()
{
float a[N]={1.2,2.2,3.3,4.4,5.5,6.6,7.7,8.8,99.9,10.1}, *p,t;
p=a+N-1;
t=*p;
for(;p>a;p--)
{
*p=*(p-1);
}
*p=t;
for(p=a;p<a+N;p++)
printf("%.1f ",*p);
printf("\n");
getch();
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с массивами и вводом/выводом данных.
- Объявление массива a типа float с 10 элементами и инициализация его значениями от 1.2 до 10.1.
- Объявление указателя p, который будет использоваться для обхода массива.
- Вычисление адреса последнего элемента массива a и сохранение его в переменной p.
- Сохранение значения последнего элемента массива в переменной t.
- Цикл, который будет переставлять элементы массива начиная с последнего и заканчивая первым.
- В каждой итерации цикла значение текущего элемента массива заменяется значением предыдущего элемента.
- После завершения цикла, значение последнего элемента массива присваивается обратно в p.
- Цикл, который выводит все элементы массива на экран через пробел.
- Ввод символа для подтверждения выполнения программы.
- Возврат 0, что означает успешное выполнение программы.