大佬们太强了,萌新作为初学者想到一个比较麻烦但是比较好理解的方法
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;
}
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;
}