学院竞选学生代表,获得了 n(1≤n≤20000)个提名票,每个提名票都写了一个学号(从 1 到 100 的整数)。现在要求给根据提名票整理出竞选人。将这些提名票依次排列,只保留这个学号第一次出现的位置,删除同一学号其余出现的位置。然后输出这些学号。
就是定义长度为n的数组,元素取值在1-100之间,然后将数组中重复元素删除,只保留第一次出现的元素
简单处理就是双循环,从第一个元素开始判断,与后面所有元素比较,如果想等则将后面的元素值改为-1。
#include <stdio.h>
int main()
{
int a[10000];
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
if(a[j] == -1)
continue;
for(j=i+1;j<n;j++)
{
if(a[j] == -1)
continue;
if(a[j] == a[i])
a[j] = -1;
}
}
for(i=0;i<n;i++)
{
if(a[i] != -1)
printf("学号:%d,位置:%d\n",a[i],i+1);
}
return 0;
}