指针练习N个数后移M个位置

有N个整数,使前面各数顺序向后移动M个位置,最后M个数变成最前面M个数。

#include<stdio.h>
#include<math.h>
void Move(int *arr,int n,int m);
int main(void){
   int arr[10]={99,88,77,66,55,44,33,22,11,0};
   printf("before move:\n");
    for(int i=0;i<10;i++)
    printf("%d ",arr[i]);
       printf("\n");

   Move(arr,10,5);
   printf("after move:\n");
for(int i=0;i<10;i++)
    printf("%d ",arr[i]);

   printf("\n");
}

void Move(int *arr,int n,int m){

    int *p=(int *)malloc(sizeof(int)*m);
    if(p==NULL){printf("memory error.");return;}

    int i,j;
   for(i=n-m,j=0;i<n,j<m;i++,j++)
        *(p+j)=arr[i];

   for(i=n-1;i>=m;i--){
        arr[i]=arr[i-m];
   }

    for(i=0;i<m;i++)
        arr[i]=*(p+i);

    free(p);
    return;
}
posted @ 2024-05-19 12:15  zhongta  阅读(34)  评论(0)    收藏  举报