#include "stdio.h"
void main() {
void move(int *p, int n, int m);
int arrays[100];
int amount, position, i;
printf("你想输入几个整数:");
scanf("%d", &amount);
printf("请输入%d个数:", amount);
for (i = 0; i < amount; i++) {
scanf("%d", &arrays[i]);
}
printf("你想将上面的数字向后移动几位:");
scanf("%d", &position);
move(arrays, amount, position);
printf("移动后的结果:");
for (i = 0; i < amount + position; i++) {
printf("%d\t", arrays[i]);
}
}
void move(int *p, int n, int m) {
int *first_p;
int *last_p;
// 指向原数组头部的指针
first_p = p;
// 指向原数组尾部的指针
last_p = first_p + n - 1;
// 先做整体移动,从数组尾部开始处理,一个一个向后移动
while (last_p >= first_p) {
*(last_p + m) = *last_p;
// 每移动完一个数字,原数组尾部指针向原数组头部方向移动一下,直到指向头部
last_p--;
}
// 然后让前面m位等于后面m位
while (first_p < (p + m)) {
*first_p++ = *(first_p + n);
}
}
初学C语言,如有错误,还望指正。