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