如果我们有一个数组,例如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
如何在数组内添加最后两个数字?
答案 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++;
}
应该是
tem
变量。 (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];
}