题目描述:
You are given an unsorted array of integer numbers. Your task is to sort this array and kill possible duplicated elements occurring in it.
输入:
For each case, the first line of the input contains an integer number N representing the quantity of numbers in this array(1≤N≤1000). Next N lines contain N integer numbers(one number per each line) of the original array.
输出:
For each case ,outtput file should contain at most N numbers sorted in ascending order. Every number in the output file should occur only once.
样例输入:
6
8 8 7 3 7 7
样例输出:
3 7 8
代码:
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return *((int*)a) > *((int*)b) ? 1: -1;
}
int main(void)
{
int n;
int a[1000], b[1000];
int i;
while (scanf("%d", &n) != EOF)
{
for (i=0; i<n; i++)
scanf("%d", &a[i]);
qsort(a, n, sizeof(a[0]), cmp);
int k = 0;
b[0] = a[0];
for (i=0; i<n; i++)
{
if (a[i] != b[k])
{
k++;
b[k] = a[i];
}
}
for (i=0; i<k; i++)
printf("%d ", b[i]);
printf("%d\n", b[i]);
}
return 0;
}
作者提醒:
要求排序之后输出时去掉重复数字,输出时加判断即可。