数组修改

作者: RicherYY | 来源:发表于2018-05-01 19:07 被阅读0次

    不可以直接从数组修改数据,因为数组的定义是一块连续的内存空间。
    可以想象成大楼,突然要摘掉第六层是不可能的。
    所以只能是后一个数覆盖前一个数。

    删除的逻辑

    12 34 23 67 9

    1.查找要修改数字的下标
    2.后面一个数字覆盖前面一个数字
    3.整个数组的总长度- 1

    比如删除23
    覆盖完了之后的效果是这样的
    12 34 67 9 9

    1.查找要修改的数字下标
    2.从下标开始后面一个元素覆盖前面的元素
    3.数组的总长度 - 1

    代码实例

    int main()
    {
        int count = 5;              //表示数组元素的个数
        int powers[] = {42322, 45771, 40907, 41234, 40767};
        int deletePowers;           //表示用户要删除的变量
        int deleteIndex = -1;            //表示用户要删除数据的下标
        int i;                      //循环变量
        printf("请输入要删除的数字;");
        scanf("%d",&deletePowers);
        for (i = 0; i < count; i++)
            {
                if (deletePowers == powers[i])
                    {
                        //记录当前的下标
                        deleteIndex = i;
                        break;
                    }
            }
        //根据判断是否找到执行后续操作
        if (-1 == deleteIndex)
            {
                printf("很遗憾没找到要删除的数据");
            }
        else
        {
            //从找到的数据下标开始,后一个数字覆盖前面一个数字
            for(i = deleteIndex; i < count - 1; i++)    // 后面一个数字赋值给前面一个数字,最后一个数字没有了所以要-1
                {
                   powers[i] = powers[i+1];
                }
        }
        //*最后一定记得总长度-1*
        count--;
    
        printf("最后删除的数据是;\n");
        for(i = 0; i < count; i++)
            {
                printf("%d\t",powers[i]);
            }
    
    
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:数组修改

        本文链接:https://www.haomeiwen.com/subject/zpbxrftx.html