c语言:从数组中删除数据

在长度是n的数组a中,删除一个指定的元素num。并把删除后的数组输出。被删除的数在数组中可能出现多次,也可能没有。
主函数如下:
#include<stdio.h>
#define N 10
void main( )
{
int a[N] , num ,i , *p , n=N;
scanf(“%d”,&num);
/*输入N个数到数组a中;*/

/*在数组a中删除指定的数num;*/

/*输出删除了num后的数组a;*/
}

分别弄了一个,看看吧,希望对你有用:
排序:
#define N 10
main()
{int i,j,min,tem,a[N];
/*input data*/
printf("please input ten num:\n");
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);}
printf("\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
/*sort ten num*/
for(i=0;i<N-1;i++)
{min=i;
for(j=i+1;j<N;j++)
if(a[min]>a[j]) min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
/*output data*/
printf("After sorted \n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
}
按序插入:
main()
{
int a[11]=;
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{ if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%6d",a[i]);
}
查找并删除:
#include<stdio.h>
main()
{int i,j,k;
int s[10],a;
printf("input 10 numbers:\n");
for(k=0;k<10;k++)
scanf("%d",s[k]);
printf("input a number:\n");
scanf("%d",&a);
for(i=j=0;i<10;i++)
if(s[i]!=a) s[j++]=s[i];
for(i=0;i<j;i++)
printf("%d",s[i]);
}
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-11
#include<stdio.h>
#define N 10
void main( )
{
int a[N] , num ,i , *p , n=N;
int j;

/*输入N个数到数组a中;*/
for(i=0;i<n;i++)
{
scanf(“%d”,&num);
a[i]=num;
}

/*在数组a中删除指定的数num;*/
for(i=0;i<n;i++)
{
if(a[i] == num)
{
//a[i]=a[n];//如果不保留原数组里的顺序,此一句即可代替下边2行语句,同时省掉变量j

for(j=i;j<n-1;j++)
a[j]=a[j+1];

n--;
}
}

/*输出删除了num后的数组a;*/
for(i=0;i<n;i++)
printf("%d ",a[i]);

getchar();
}本回答被提问者和网友采纳