不可以直接从数组修改数据,因为数组的定义是一块连续的内存空间。
可以想象成大楼,突然要摘掉第六层是不可能的。
所以只能是后一个数覆盖前一个数。
删除的逻辑
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;
}
网友评论