언어/C

입력값이 배열 요소인지 판별하는 프로그래밍

새싹개발자 2020. 7. 8. 17:03

정수인 20개의 요소값이 저장되어 있는 배열(data)이 주어져 있다. 요소값은 중복되지 않는다.

사용자로부터 하나의 정수(n)를 입력받아 입력받은 정수가 배열에 있으면 몇번째에 있는 지 알려주고,

배열에 없으면  "n은 배열에 없습니다"를 출력하는 프로그램을 작성하라.

단, 0번 index를 첫번째 요소라 한다. 즉, 주어진 배열에서 1이 1번째 요소이고 35가 20번째 요소이다.

 

조건1. 하나의 정수를 입력받는다.

조건2. 배열에 있다면 몇 번째에 있는 지 출력

조건3. 배열에 없다면 "n은 배열에 없습니다"를 출력

 

#include <stdio.h>
#define SiZE 20

int main()
{   
    int data[SiZE]=
    {1,3,6,7,8,9,12,14,17,19,20,23,25,26,27,30,31,33,34,35};
    
    int n; // 입력받을 변수 
    int cnt=0; // 배열 요소인지 아닌지 판단
    scanf("%d", &n);
       
    for(int i=0; i<SiZE; i++){
        if(n==data[i]){ // n이 배열 요소라면
            cnt++; // cnt++ 해주어라
            printf("%d는 배열의 %d번째 요소이다.", n, i+1); //★
        }
    }
    if(cnt==0){ // cnt가 0이라면 (n이 배열 요소가 아니라면)
        printf("%d은 배열에 없습니다", n);
    }
    return 0;
}

 

 ★  printf("%d는 배열의 %d번째 요소이다.", n, i+1); 

i+1 인 이유? 배열은 data[0]이 첫번째 요소, data[1]이 두 번째 요소,,, 따라서 data[i]는 i+1번쨰 요소이다.

 

<실행결과>