将数组中保存的长度为n的序列循环左移P个位置(0<p<n)
最基本的思路:用变量保存第一个位置的元素值后,将数组从第二个位置起每个元素都向前移动一位,再将变量保存的元素放置于数组最后位置,重复上述操作一共进行p轮。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void move(int a[],int p,int n){
int temp;
for(int i=0;i<p;i++)
{
temp =a[0];
for(int j=0;j<n-1;j++)
{
a[j]=a[j+1];
}
a[n-1]=temp;
}
}
int main(){
int n,p;
printf("输入数组大小n:");
scanf("%d",&n);
int a[n];
srand(time(NULL));
printf("数组为:\n");
for(int i=0;i<n;i++)
{
a[i]=rand()%100;
printf("%d ",a[i]);
}
printf("\n输入左移位置p:");
scanf("%d",&p);
move(a,p,n);
printf("移动后数组为:\n");
for(int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
运行结果: