如何在C中将数组元素移位n个位置

时间:2019-08-25 18:19:10

标签: c arrays

如果我们有一个数组,例如Arr [] = {1,2,3,4,5},并且我想将元素移位2,该怎么办? 数组应为:{3,4,5,1,2}。 我试图用这种方式来解决:

#include <stdio.h>

int main(void) {
  int broj,pom,i,niza1[10],niza2[10],raz,tem=0,rest=0;

  scanf("%d%d",&broj,&pom);//broj= number of elements and pom=shifting
  for (int i=0;i<broj;i++){
    scanf ("%d",&niza1[i]);
  }
  raz=broj-pom;//difrence between thenumber of elements and shifting
    for (int i=raz;i<=broj;i++){
      niza2[tem]=niza1[i-1];
      tem++;

    }
       for (int i=0;i<broj;i++){
      printf("%d",niza2[i]);
      }

    return 0;
}

输入:5 2        1 2 3 4 5 抢救:3 4 5 0 0

如何在数组内添加最后两个数字?

1 个答案:

答案 0 :(得分:2)

您仅将broz - raz个元素复制到新数组中。

  raz=broj-pom;//difrence between thenumber of elements and shifting
    for (int i=raz;i<=broj;i++){
      niza2[tem]=niza1[i-1];
      tem++;

    }

应该是

  1. 我删除了不必要的tem变量。
  2. (i+raz)%broj,您需要%来包装副本。

    raz=broj-pom;//difrence between thenumber of elements and shifting
    for (int i=0;i<broj;i++){
      niza2[i]=niza1[(i+raz)%broj];
    }
    
相关问题