给出一个数组,比如{1,3,6,9,13,8},如果其中两个数的和是14,则将这两个数删除,输出剩下的数字。
#include <stdio.h>
#include <stdlib.h>
#define SUM 14
int comp ( const void *a, const void *b )
{
return * ( int * ) a - * ( int * ) b;
}
int main()
{
int a[] = {1,3,6,9,13,8};
int len = sizeof(a)/sizeof(a[0]);
int i = 0;
int j = 0;
int k = 0;
int b[len];
qsort(a,len,sizeof(int),comp);
for (;i < len; i++)
{
printf("%d ",a[i]);
}
printf("\n");
j = len-1;
for (i = 0; i < j; i++)
{
//从后向前遍历数组,将大于SUM-a[i]的数剔除
while (j > i && a[j] > SUM-a[i])
{
b[k++] = a[j];
j--;
}
if (a[j] == SUM - a[i])
{
j--;
}
else
{
b[k++] = a[i];
}
}
if (i == j)
{
b[k++] = a[i];
}
i = 0;
for (;i < k; i++)
{
printf("%d ",b[i]);
}
return 0;
}