问题
给你 N 个数(N≤100),每个数都在(0∼1000)之间,其中由很多重复的数字,请将重复的数字只保留一个,并将剩下的数由小到大排序并输出。
1.分析问题
- 已知:N个数
- 未知:输出数列
- 关系:重复的数字只保留一个,并将剩下的数由小到大排序
2.定义变量
x:当前输入的数。
count:实际输入的个数。
//二、数据定义
int a[1001]={
0},n,x,count=0;
3.输入数据
由于读入的元素在 0~1000之间,我们准备一个长度为 1001 的数组用来标记 x 有没有出现过。
//三、数据输入
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
if(0==a[x]){
++count;
}
a[x]=1;
}
4.数据计算
5.输出结果
我们只输出数组中值为1的数,注意我们需要输出它的下标,而不是它的值。
#include<iostream>
using namespace std;
int main(){
//一、分析问题
//已知:N个数
//未知:输出数列
//关系:重复的数字只保留一个,并将剩下的数由小到大排序
//二、数据定义
int a[1001]={
0},n,x,count=0;
//三、数据输入
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
if(0==a[x]){
++count;
}
a[x]=1;
}
//四、数据计算
//五、输出结果
cout<<count<<endl;
for(int i=0;i<1001;i++){
if(1==a[i]){
cout<<i<<endl;
}
}
return 0;
}