#include <stdio.h> #include <stdlib.h> int main() { int n; while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case int* p = malloc(sizeof(int) * n); if (p == NULL) { perror("main"); return 1; } //赋值 int i; for (i = 0; i < n; i++) { scanf("%d", &p[i]); } int j = 0; int k = 0; p[k++] = p[0]; //先将首个元素保存,首个元素肯定是要输出的 //外层循环用来控制对比的元素 for (i = 1; i < n; i++) { int flag = 0; //判断指标 //内层用来对比,只需要比自己前面的元素即可 for (j = 0; j < i; j++) { if (p[i] == p[j]) { flag++; //判断是否有相同元素的指标 break; //已经找到了相同元素,可以直接退出对比循环 } } if (flag != 1) { //检测到当前的元素都是唯一的,将需要输出的元素放在数组前段 p[k++] = p[i]; } } //打印输出 for (i = 0; i < k; i++) { printf("%d ", p[i]); } //释放 free(p); p = NULL; } return 0; }