C語言找出第一個未出現的正整數
阿新 • • 發佈:2019-02-10
題目描述:輸入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); //確定輸入數字的個數
{
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;
}
下面是程式示例: