对于给定的数列,要求把其中的重复元素删去再从小到大输出。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入一个整数n(1≤n≤100),再输入n个整数。
输出格式:
对于每组测试,从小到大输出删除重复元素之后的结果,每两个数据之间留一个空格。
输入样例:
1
10 1 2 2 2 3 3 1 5 4 5
输出样例:
1 2 3 4 5
实现代码:
#include<stdio.h> int main() { int T,i,j,k,a[100],n,t; scanf("%d",&T); for(i=1;i<=T;i++) scanf("%d",&n); for(j=0;j<n;j++) scanf("%d",&a[j]);//输入数据 for(j=0;j<n;j++) { for(k=j+1;k<n;k++) { if(a[k]==a[j]) //判断重复 { for(int c=k;c<n;c++) { a[c]=a[c+1]; } n--;//重复的元素已经被删除了,所以总数-1 k--;//被删除的元素的原位置填入了后一个元素,如果不执行k--,当进入下一次循 //环时会执行k++,即跳过了新元素 } } } //采用冒泡排序 for(j=0; j<n-1; j++) { //每轮比较前n-1-j个,也就是说已经排序好的最后j个不用比较 for(int k=0;k<n-1-j;k++) { int temp; if(a[k]>a[k+1]) { temp=a[k]; a[k]=a[k+1]; a[k+1]=temp; } } } for(j=0;j<n;j++) printf("%d ",a[j]); }