#include <stdio.h>
#include <stdlib.h>
void paixu(int a[], int n, int m)
{
int i = 0;
int j = 0;
for (i = n - 1; i > n - 1 - m; i--)
{
a[i + m] = a[i];
}
for (i = n - 1; i >= 0; i--)
{
a[i] = a[i - m];
}
for (i = 0; i < m; i++)
{
a[i] = a[n + i];
}
}
int main()
{
int n = 0;
int i = 0;
int m = 0;
int a[100];
scanf_s("%d", &n);
for (i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
scanf_s("%d", &m);
paixu(a, n, m);
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
核心部分是三个for循环
n是数组的长度,m是移动的长度
第一个for循环是将数组最后m个元素移动到其他空间
第二个for循环是将剩下的n-m个元素整体向后移动m个单位
第三个for循环是将m个元素移动到数组的开头部分
结果为