C 语言

数组修改

2018-05-01  本文已影响0人  RicherYY

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

删除的逻辑

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;
}
上一篇 下一篇

猜你喜欢

热点阅读