JINTBEAT Design Life

C언어 - 문제 풀이(배열과 포인터) 본문

🖥️ - C language

C언어 - 문제 풀이(배열과 포인터)

jintbeat_design 2025. 5. 21. 01:34
반응형

 

 

🖌️  길이가 10인 배열을 선언하고 총 10개의 정수를 입력받는다.
🖌️  단, 입력 받은 숫자가 홀수이면 배열의 앞에서부터 채워나가고, 짝수이면 뒤에서부터 채워나가는 형식을 취하기로 하자.
🖌️  따라서 사용자가 [1,2,3,4,5,6,7,8,9,10]을 입력했다면, 배열에는 [1,3,5,7,9,10,8,6,4,2]의 순으로 저장이 되어야 한다.

🖌️  배열의 요소를 출력하는 함수도 설계

 

void PrintArray(int *arr, int size) {
    for(int i = 0; i < size; i++) {
        printf("arr[%d] = %d\n", i, *(arr + i));
    }
}

 

위와 같이 배열의 각 요소를 출력하는 함수를 설계할 수 있다. 

배열의 주소(포인터)와 배열의 크기를 입력으로 받아서, arr[i] = i번째 배열 요소 값을 출력할 수 있다. *(arr+i) 코드로 배열의 각 요소를 접근 & 출력할 수 있다. 

 

int main() {
	
	int arr[10] ;	
	int num[10] ;
	
	printf("10개의 정수를 입력하세요: \n") ;
			
	for(int i=0; i<10; i++){
		scanf("%d", &num[i]) ;
	}

	int even_cnt = 0 ;
	int odd_cnt  = 0 ;
	
	for(int i=0; i<10; i++){
		if(num[i] % 2 == 1) {
			arr[even_cnt] = num[i] ;
			even_cnt++ ;
		}
		else {
			arr[9-odd_cnt] = num[i] ;
			odd_cnt++ ;
		}
	}

	printf("문제 결과: \n") ;
	PrintArray(arr, sizeof(arr)/sizeof(arr[0]));											   
}

 

1. scanf로 num 배열의 10개 요소에 값을 키보드 입력을 받는다.

2. even_cnt, odd_cnt 변수를 선언한다.

3. 배열의 각 요소를 체크한다. 짝수면 even_cnt를 증가시키고, 홀수면 odd_cnt를 증가시킨다.

4. 그리고 짝수면 arr 배열의 even_cnt에 값을 저장시키고, 홀수면 arr 배열의 9-odd_cnt에 값을 저장시킨다.

5. 마지막으로, PrintArray 함수를 호출해서, 배열 값을 확인했다.

 

 

 

그럼, 1,2,3,4,5,6,7,8,9,10 을 입력했을 때, 문제에서 원하는 형태의 출력을 얻을 수 있다.

반응형