建一个数组,从第i个元素起删除连续的K个元素 要用C语言 C的初学者,不太懂,要是可以在程序上运行的,谢

如题所述

#include <stdio.h>
#define Maxsize 40

int DelArray(int array[],int *last,int i,int k) {
int j;

if(i < 0 || k < 0) {
printf("给出的起始位置及删除个数不合法\n");
return 1;
}
if (i > *last) {
printf("越界,删除失败\n");
return 1;
}
if (i + k - 2 >= *last) {
*last = i -2;
return 0;
}
for(j = i -1; j + k <= *last; j++)
array[j] = array[j+k];
*last -= k;

return 0;
}

int main()
{
int array[Maxsize], last, i, j, k; //array:数组,last:数组最大下标,j:循环变量

printf("请输入数组元素个数\n");
scanf("%d",&last);
last--;
printf("请输入数组\n");
for(j = 0;j <= last;j++)
scanf("%d",&array[j]);
printf("请输入删除起始位置及个数\n");
scanf("%d%d",&i,&k);
DelArray(array,&last,i,k);
printf("输出删除处理后的数组\n");
for(j = 0;j <= last;j++)
printf("%d ",array[j]);
printf("\n");

return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-08
因为数组的空间在申请后就是固定的,因此无法通过释放数组元素的空间达到删除的目的!!但是你可以借助与另外一个数组!!实现所谓的删除操作!
main()
{int j;
int i;int a[20];int b[20];
printf("输入i\n");
scanf("%d",&i);
printf("输入数组的元素:\n");
for(j=0;j<20;j++)
{
printf("a[%d]:",j+1);
scanf("%d",&a[j];
}
for(j=0;j<i;j++)
b[j]=a[j];
for(j=i+k;j<20;j++)
b[j]=a[j];

return ;

}