原题
描述:明明生成了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;
}

京公网安备 11010502036488号