数组块平移

作者在 2012-10-29 12:33:39 发布以下内容
/*
*有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数
*/
#include <stdio.h>
#include <stdlib.h>

int *f(int *p, int n, int m);

int main(){
    int array[10] = {2,9,8,0,7,6,5,3,4,1};
    int *q, i;

    printf("原来的数组:n");
    for(i=0; i!=10; i++){
        printf("%4d", array[i]);
    }
    printf("n");

    q = f(array, 10, 3);
    for(i=0; i!=10; i++){
        array[i] = *(q+i);
    }
    printf("n");

    printf("调整后的数组:n");
    for(i=0; i!=10; i++){
        printf("%4d", array[i]);
    }
    printf("n");
    return 0;
}

int  *f(int *p, int n, int m){
    int *r, i;
    int cnt = 0;
    r = (int*)malloc(sizeof(int)*10);
    for(i=n-m; i<n; i++){
        *(r+cnt++) = *(p+i);
    }
    for(i=0; i<n-m; i++){
        *(r+cnt++) = *(p+i);
    }
    return r;
}
 
基础编程 | 阅读 976 次
文章评论,共0条
游客请输入验证码
浏览18304次
文章归档