首页 > 解决方案 > 如何在C中将数组元素移动n个位置

问题描述

如果我们有一个数组,例如 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

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

标签: carrays

解决方案


您只是将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];
    }
    

推荐阅读