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


    例如,数组: 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

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

  • 相关阅读:
    CSS 中 Position relative 和 absolute区别
    感受到LDT的好处
    Map数据结构
    break和continue
    vue的ref属性
    css小样式
    搭建vue开发环境
    setTimeout和clearTimeout
    垂直居中
    vertical-align 属性
  • 原文地址:https://www.cnblogs.com/hushunfeng/p/3892365.html
Copyright © 2020-2023  润新知