指针实现
#include <stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<stdbool.h>//函数实现思路 暂存数组再写回void NumberMov(int* data, int m,int n){int b[100] = { 0 };int i = 0;for (i = 0; i < m; i++) { // 暂存数组b[i] = *(data + n-1 - i);}for (i = n-1; i >=m; i--) { // 移动原数组*(data + i) = *(data + i - m);}for (i = 0; i < m; i++) { // 写回原数组*(data + i) = b[m-1-i];}}// 从后开始整体后移 在原数组上找需要的数void NumberMov(int *data,int n,int m){for (int i = n; i >= 0; i--){ // 整体后移m位*(data + m + i) = *(data + i);}for (int j = 0; j < m; j++){ // 前m个移位*(data + j) = *(data + n + j);}}int main(){int n;int i;scanf("%d", &n);int a[100] = { 0 };int m;for (i = 0; i < n;i++){scanf("%d", a + i);}scanf("%d", &m);NumberMov(a, m,n);//函数调用for (i = 0; i < n; i++) {printf("%d ", *(a+i));}return 0;}
