1. 程式人生 > >C語言找出第一個未出現的正整數

C語言找出第一個未出現的正整數

題目描述:輸入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;

}

下面是程式示例: