定义一个数组,删除用户指定的下标位置的元素
? ? ? ? 要求:1.须告知删除的数据情况
? ? ? ? ? ? ? ? ? ?2.删除后的元素最后一位为 0;(0? 仅占位使用)
提供数组为 int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
删除下标 6 的元素后数组展示为 {1, 2, 3, 4, 5, 6, 8, 9, 10, 0}
?代码如下:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
/*
删除指定下标位置元素
@param arr 用户提供 int 类型数组
@param capacity 数组的容量
@param index 用户的指定下标位置
@return 删除成功返回用户删除的数据
*/
int remove_index_num(int arr[], int capacity, int index);
int main(int argc, char const *argv[])
{
//删除数据的目标数组
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//用户指定的下标
int index = 9;
//接受用户删除的数据
int remove_num = remove_index_num(arr, 10, index);
//告知用户所删除的数据
cout << "被删除的元素为 :" << remove_num << endl;
cout << "-----------楚河汉界----------------" << endl;
//循环展示数组元素
for (int i = 0; i < 10; i++)
{
cout << "arr[" << i << "] = " << arr[i] << endl;
}
return 0;
}
int remove_index_num(int arr[], int capacity, int index)
{
//判断用户输入的下标是否在有效范围以内
if(index < 0 || index > capacity - 1)
{
cout << "输入下标位置不在范围内" << endl;
return 0;
}
//定义一个变量用来存储用户所删除的数据
int target = arr[index];
//遍历数组从用户指定的下标位置开始
for (int i = index; i < capacity - 1; i++)
{
//整体数据往前移动一位覆盖掉删除的数据
arr[i] = arr[i + 1];
}
//最后一位赋值为 0 表示删除操作已经成功
arr[capacity - 1 ] = 0;
//返回用户所删除的数据以便用户知道删除了什么
return target;
}
结果如下:
?
小编今天的分享到此结束啦!!? ?我们下次再见!!