fork download
  1. #include <stdio.h>
  2.  
  3. void rotate(int* nums, int numsSize, int k){
  4.  
  5. int *p=(int *)malloc(sizeof(int)*k);
  6. int i=0;
  7. //将前k个数复制到新建的数组中
  8. for(;i<k;i++)
  9. p[i]=nums[numsSize-k+i];
  10.  
  11. for(i=0;i<k;i++)
  12. printf("%d ",p[i]);
  13. puts("");
  14.  
  15. //将前面的数据往后移动
  16. for(i=numsSize-1-k;i>=0;i--)
  17. nums[numsSize-1-k+i]=nums[i];
  18.  
  19. for(i=0;i<numsSize;i++)
  20. printf("%d ",nums[i]);
  21. puts("");
  22.  
  23. for(i=0;i<k;i++)
  24. nums[i]=p[i];
  25.  
  26. //free(p);
  27. // p=NULL;
  28. }
  29.  
  30.  
  31. int main(void) {
  32. // your code goes here
  33. int nums[8]={1,2,3,4,5,6,7,8};
  34. rotate(nums,8,3);
  35.  
  36. int i=0;
  37. for(i=0;i<8;i++)
  38. printf("%d ",nums[i]);
  39.  
  40.  
  41.  
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 0s 5412KB
stdin
Standard input is empty
stdout
6 7 8 
1 2 3 4 1 2 3 4 
6 7 8 4 1 2 3 4