首页 > 代码库 > 关于固定长度数组中以元素为单位进行的移位操作

关于固定长度数组中以元素为单位进行的移位操作

例如,数组: int array[5] = {1,2,3,4,5};整体往后循环移1个单元的元素。

最开始代码如下。

/****  @author:hushunfeng**    */#include<stdio.h>void main() {    int array[5] = {1,2,3,4,5};    int i;    for(i = 0; i < 5 ; i++) {        array[i+1] = array[i];    }    for(i=0;i<5;i++) {        printf("%d\n",array[i]);    }    }

结果:1 1 1 1 1

一开始将1移到下一位后,下一位内的内容已经变成1,那么再往下移,就会连续输出1

改进后的初步代码

/****  @author:hushunfeng**    */#include<stdio.h>void main() {    int array[5] = {1,2,3,4,5};    int i;    for(i = 3; i >=-1 ; i--) {        if(i==-1)             array[i+1] = array[i+5];        else            array[i+1] = array[i];    }    for(i=0;i<5;i++) {        printf("%d\n",array[i]);    }    }

结果:4 1 2 3 4  最后一位还存在问题 说明没有达到循环的效果。

正确代码:

*//****  @author:hushunfeng**    */#include<stdio.h>void main() {    int array[5] = {1,2,3,4,5};    int temp;        int index;    int i;    temp = array[4];        for(index=3;index>=0;index--) {        array[index+1] = array[index];    }    array[0] = temp;        for(i=0;i<5;i++) {        printf("%d\n",array[i]);    }}

结果: 5 1 2 3 4

如果要移动多位,那么可以重复操作上述操作即可。