- Description
在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。
- Input
第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。
第二行是要插入的数。
第三行是要删除的数。
- Output
第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。
第二行输出插入后自小到大排好序的数,以“,”隔开。
第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。
- Sample Input
100 98 79 63 44 99 -1
88
79
- Sample Output
44,63,79,98,99,100
44,63,79,88,98,99,100
44,63,88,98,99,100
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp(const int*a,const int*b)
{return *a-*b;}
int main()
{
int a[10001]={5},i,j,x,n=0;
do
{
scanf("%d",a+n);
n++;
}while(a[n-1]!=-1);
n--;
if(n==0)
{
printf("No elements.\n");}
else
{qsort(a,n,sizeof(a[0]),cmp);
printf("%d",a[0]);
for(i=1;i<n;i++)
printf(",%d",a[i]);
printf("\n");
}
scanf("%d",&x);
if(n==0)
a[0]=x;
else
{
for(i=0;i<n;i++)
if(x<=a[i])
{
for(j=n;j>=i+1;j--)
a[j]=a[j-1];
a[i]=x;
break;
}
if(i==n)
a[n]=x;
}
n++;
printf("%d",a[0]);
for(i=1;i<n;i++)
printf(",%d",a[i]);
printf("\n");
scanf("%d",&x);
i=1;
if(n!=1)
{
for(i=0;i<n;i++)
if(a[i]==x)
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;i--;
}
printf("%d",a[0]);
for(i=1;i<n;i++)
printf(",%d",a[i]);
printf("\n");
}
else
{
if(a[0]!=x)
printf("%d\n",a[0]);
else
n--;
}
if(n==0)
printf("No elements.\n");
return 0;
}