移动一维数组的内容

1 题目

函数:fun()

功能:移动一维数组的内容

描述:若数组中有n个整数,要求把下标从0到p(含p,p<=n-1)的元素平移到数组的最后
举例:

一维数组:1,2,3,4,5,6,7,8,9,10,p的值为3

移动后:5,6,7,8,9,10,1,2,3,4

2 思路

循环 p 次:

将下标为0的数字进行临时存放,然后将后面的数字平移到前面,最后将临时存放的数字放到最后一位

3 代码

#include <stdio.h> 
#include <stdlib.h>
#define N 10

/**
函数:fun()
功能:移动一维数组的内容
描述:若数组中有n个整数,要求把下标从0到p(含p,p<=n-1)的元素平移到数组的最后
举例:
一维数组:1,2,3,4,5,6,7,8,9,10,p的值为3
移动后:5,6,7,8,9,10,1,2,3,4
**/


void fun(int *a, int p) {
    int temp;
    for (int i = 0; i <= p; ++i) {
        temp = a[0];    // 临时存放第一个数字
        for (int j = 1; j < N; ++j) {   // 循环将后续数字进行平移
            a[j-1] = a[j];
        }
        a[N-1] = temp;  // 临时数字存放到最后一位
    }
}


int main(int argc, char const *argv[]) { 
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    int p = 3;

    printf("原始数组内容:\n");
    for (int i = 0; i < N; ++i) {
        printf("%d ", a[i]);
    }
    printf("\n");
  
    fun(a, p);
    printf("平移后数组内容:\n");
    for (int i = 0; i < N; ++i) {
        printf("%d ", a[i]);
    }
    printf("\n");
}

示例结果:

$ gcc ex009.c -o demo
$ ./demo
原始数组内容:
1 2 3 4 5 6 7 8 9 10
平移后数组内容:
5 6 7 8 9 10 1 2 3 4
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容