描述
输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。
输入描述:
输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出描述:
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
示例1
输入:
5 10 12 93 12 75
输出:
10 12 93 75
思路
对序列中去重,那么就需要两个数组,一个来接收用户输入的数,另一个来输出。利用两个循环来遍历这两个数组,因为我们最后是需要打印第二个数组,所以我们需要第二个数组来接收不重复的数,同时不改变他们的顺序。这里我们可以定义一个标志(sum),也就是说,如果数组1中出现了从复数字,那么就不将这个数放入数组2中,直到数组1中的数字全部遍历完。
代码如下:
#include <stdio.h>
int main()
{
int count1[1000];
int count2[1000];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&count1[i]);//接收数据放在数组1中
}
int j,k=0;
for(j=0;j<n;j++)
{
int sum = 0;//用sum来表示count1中是否有数字重复
for(int m=0;m<=j;m++)
{
if(count1[j] == count2[m])//遍历数组2中是否已经存在了数组1中的数
{
sum = 1;//已经存在则返回1 ,不将该数放在数组2中,并进行下一次的循环
break;
}
}
if(sum==0)
{
count2[k] = count1[j];
k++;
}
}
for(int a=0;a<k;a++)
{
printf("%d ",count2[a]);
}
return 0;
}