大佬们太强了,萌新作为初学者想到一个比较麻烦但是比较好理解的方法
arr数组用于存放输入的整数,map数组存放1~500用于和arr作比较(for循环对map[501]进行元素填充,注意填充从下标1开始,方便后续计算)
while循环向arr数组输入整数,输入一次和map数组对比一次,如果有相等对应下标的map[j]置501,后续相同元素对比map不可能满足arr[i]==map[k]
题目要求输入数字满足1~500,所以0不需要判断,将值为501的元素顺序打印即可
这套代码优缺点都很明显
缺点是开辟内存空间较大,占用资源多;
优点是省略了数组内容排序的过程,同时保留输入数组内容,后续如果有需求可以直接拿来用。
#include <stdio.h>
int main()
{
    int N;
    scanf("%d",&N);
    int arr[1000];
    int i=0;
    int map[501];
    for(int j=1;j<501;j++)
    {
        map[j]=j;    
    }
    while(scanf("%d",&arr[i]) != EOF)
    {
        for(int l=1;l<501;l++)
        {
            if(arr[i]==map[l])
            {
                map[l]=501;
            }    
        }
        i++;
    }
    for(int j=1;j<501;j++)
    {
        if(501==map[j])
        {
            printf("%d\n",j);
        }    
    }
    return 0;
}