4 自定义函数删除下标为index的数组 (20分)
本题要求自定义函数delIndex,删除下标为index的元素,数组的长度减1。 程序运行时,输入要删除的下标值,输出调用delIndex函数后的数组值。
函数接口定义:
void delIndex(int a[], int &n, int index); //删除n个int型元素的一维数组a中下标为index的元素,若删除成功,将n的值减1
a 是int*值,表示int型元素的数组的首地址(可以看做数组名);
n 是int型变量的引用,表示数组的元素个数;
index是int值,表示要删除元素的下标
如果index在数组的下标范围,删除该下标的值,并修改数组的实际长度n。注意:数组元素是一次性分配的连续内存,不能释放某一个元素的内存
裁判测试程序样例:
#include<iostream>
#include<iomanip>
using namespace std;
void output(const int a[],int n); //输出一维数组
void delIndex(int a[], int &n, int index); //若index在数组下标范围,删除第index元素的值,并将n的值-1
const int N=20;
int main()
{
int a[N]={12,25,30,50,48,9,89,23,45,58,69,88,77,65,98};
int n=N;
int loc;
cin >> loc;
delIndex(a,n,loc);
output(a,n);
return 0;
}
void output(const int a[],int n)
{
for(int i=0;i<n;i++)
cout << setw(5) << a[i];
}
/* 请在这里填写自定义函数定义的答案 */
输入样例1:
3
输出样例1:
12 25 30 48 9 89 23 45 58 69 88 77 65 98 0 0 0 0 0
输入样例2:
20
输出样例2:
12 25 30 50 48 9 89 23 45 58 69 88 77 65 98 0 0 0 0 0
void delIndex(int a[], int &n, int index)
{
if(index<19&&index>=0)
{
for(int i=index;i<n-1;i++)
{a[i]=a[i+1];}
a[n-1]=0;
n--;
}
else
{a[index]=0;}//觉得这道函数题没一点意思,很烦人
}