指针实现

    1. #include <stdio.h>
    2. #include<stdlib.h>
    3. #include<math.h>
    4. #include<string.h>
    5. #include<stdbool.h>
    6. //函数实现思路 暂存数组再写回
    7. void NumberMov(int* data, int m,int n)
    8. {
    9. int b[100] = { 0 };
    10. int i = 0;
    11. for (i = 0; i < m; i++) { // 暂存数组
    12. b[i] = *(data + n-1 - i);
    13. }
    14. for (i = n-1; i >=m; i--) { // 移动原数组
    15. *(data + i) = *(data + i - m);
    16. }
    17. for (i = 0; i < m; i++) { // 写回原数组
    18. *(data + i) = b[m-1-i];
    19. }
    20. }
    21. // 从后开始整体后移 在原数组上找需要的数
    22. void NumberMov(int *data,int n,int m){
    23. for (int i = n; i >= 0; i--){ // 整体后移m位
    24. *(data + m + i) = *(data + i);
    25. }
    26. for (int j = 0; j < m; j++){ // 前m个移位
    27. *(data + j) = *(data + n + j);
    28. }
    29. }
    30. int main()
    31. {
    32. int n;
    33. int i;
    34. scanf("%d", &n);
    35. int a[100] = { 0 };
    36. int m;
    37. for (i = 0; i < n;i++)
    38. {
    39. scanf("%d", a + i);
    40. }
    41. scanf("%d", &m);
    42. NumberMov(a, m,n);//函数调用
    43. for (i = 0; i < n; i++) {
    44. printf("%d ", *(a+i));
    45. }
    46. return 0;
    47. }