学院竞选学生代表,获得了 n(1≤n≤20000)个提名票,每个提名票都写了一个学号(从 1 到 100 的整数)。现在要求给根据提名票整理出竞选人。将这些提名票依次排列,只保留这个学号第一次出现的位置,删除同一学号其余出现的位置。然后输出这些学号。
1条回答 默认 最新
CSDN专家-link 2021-11-20 16:43关注就是定义长度为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; }解决 无用评论 打赏 举报 编辑记录