一道数组的C语音题(ง •̀_•́)ง加油

img


能给我讲讲思路吗,不太理解
(●'◡'●)
●)o(●
(ง •̀_•́)ง加油

#include<stdio.h>

int main() {
int p, m, i;
int A[10], B[10];
for (i = 0; i < 10; i++)
A[i] = rand() % 100;
printf("产生的随机数组元素为:");
for (i = 0; i < 10; i++)
printf("%3d ", A[i]);
printf("\n");
p = rand() % 10; //随机生成p值
printf("p=%d\n", p);

for (i = 0,m=p; i <= p; i++,m--)
    B[10 - m] = A[i];
for (i = p, m = 0; i < 10; i++, m++)
    B[m] = A[i];
printf("移位后数组元素为:");
for (i = 0; i < 10; i++)
    printf("%3d ", B[i]);
printf("\n");
return 0;

}

就是数组数据的转移交换
假如数组a[10]={1,2,3,4,5,6,7,8,9,10};
p=3;
就说明 数组下标从0-3位置的数据 要移到数组的尾部
原本:1,2,3,4,5,6,7,8,9,10
移动后:5,6,7,8,9,10,1,2,3,4

如有帮助,还请帮忙点下采纳!感谢!

以p为分割点把数组分割成0-p和p+1-9两段.
这样就可以先循环p+1-9 为a的索引i ,j从0开始,为b的索引.
for(i=p+1,j=0;i<10;i++,j++)
然后再循环0-p,j继续.
for(i=0;i<=p;i++,j++)