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

例如,数组: 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
",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
",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
",array[i]);
    }
}

结果: 5 1 2 3 4

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