原题
描述:明明生成了N个1到500之间的随机整数,请你删除其中重复的数字,即相同的数字只保留一个,把其余相同的数字去掉,然后再把这些数字从小到大排序,按照排好的顺序输出
数据范围:1≤n≤1000,输入的数字大小满足1≤val≤500
输入:第一行先输入随机整数的个数N,接下来的N行,每行输入一个整数,代表明明生成的随机数,具体格式可以参考示例
输出:输出多行,表示数据处理后的结果
示例1
输入:
3
2
2
1
输出:
1
2
思路
1、数组去重
2、数组排序
#include<stdio.h> const int max1=1001,max2=501; int main(){ int a[max1],count[max2]={0},i,n;//a用来记录原随机数,count用来记录每个随机数出现的次数 scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); count[a[i]]++; } //去重 for(i=0;i<n;i++){ if(count[a[i]]>1){ count[a[i]]--;//注意此处先处理对应的count数值,然后再改变a的大小 a[i]=0; } } //选择排序 int k,index,temp; for(k=0;k<n-1;k++){ index=k; for(i=k+1;i<n;++) if(a[i]<a[index])index=i; temp=a[index]; a[index]=a[k]; a[k]=temp; } //输出,注意不要输出0 for(i=0;i<n;i++){ if(a[i])printf("%d",a[i]); } return 0; }