
把数组的第I个元素删除
#include
int fun( char *a, int n, int i );
void main(void)
{
int i = 0;
char a[10];
printf("槐野请输入十个字符:");
for ( i=0; i<10; i++ )
{
scanf("%c",&a[i]);
}
printf("请输入要删除此清的元素位置:");
scanf("%d"森明前,&i);
fun(a,10,i);
for ( i=0; i<10; i++ )
{
printf("%c",a[i]);
}
printf("\n");
}
int fun( char *a, int n, int i )
{
int j = i;
if ( j<0 || j>=n )
{
return -1;
}
for ( ; j
*(a+j) = *(a+j+1);
}
*(a+j) = '\0';
return 0;
}
#include
#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;
}
一个很简单的,就是,不用这个数组了,把这个数组从第二晌码个位置开始拷贝到另备祥一个仿谨搏数组中。
简单是王道。
#include
void main()
{
int a[11],i,j;
printf("input ten numbers:");
for(i=0;i<10;i++)
scanf("带春%d",&a[i]);
for(i=0;i<10;i++)
printf("%d",a[i]);
for(i=1;i<10:i++)
a[i]=a[i+1]:
a[10]='厅行段\n':
for(i=0;i<扮誉10;i++)
printf("%d",a[i]);
}
#incude
void main()
{ int i,j,a[5]={1,2,3,4,5};
for(i=0;i<誉知4;i++)
a[i]=a[i+1];
for(i=0;i<4;i++)
printf("枝虚亩%d\n"猛森,a[i]);
}