题目描述:输入N,然后输入N个数,输出第一个未出现的正整数
解决思路:首先将整个数组赋值为 0(或其他小于 0 的数),然后利用数据与其下标的关系。例如,当输入数字 X 时,将其存在下标为X-1的数组元素中,若X-1<= 0 ,则不必存储,然后从第一个数组元素开始查找,直至找到赋值为 0 的数组元素,将其下标+1即为第一个未出现的正整数。
#include <stdio.h>
int main()
{
int i,j,k,m,n,str[1000]={0}; //各数组元素均赋值为 0
scanf("%d",&n); //确定输入数字的个数
for(i=0;i<n;i++){
scanf("%d",&m);
if(m>0) //若m-1>0,则将其存在对应数组元素下
{
str[m-1]=m;
}
}
for(i=0;i<n;i++)
{
if(str[i]==0) //找到为 0 的数组元素
{
printf("%d",i+1); //将其下标+1输出
break;
}
}
return 0;
}
下面是程序示例: