본문 바로가기
C언어

[C언어] 3개의 정수 중에서 최소값을 구하는 매크로 GET_MIN(x,y,z)를 정의하고 이것을 사용하여서 사용자로부터 받은 3개의 정수중에서 최소값을 계산하고 출력하시오

by 이얏호이야호 2020. 5. 11.

조건연산자,  매크로 값을 이용하여 최소값을 만들어내는 GET_MIN(x,y,z)를 정의하는 프로그램을 가지고 왔습니다.

물론 단번에 코드를 본다면 좋기야 하겠지만 장기적으로 봤을 때

혼자 풀어보기 -> 힌트 -> 코드 보기 순으로 공부하시는 게 실력 향상에 큰 도움이 됩니다!

힌트를 보고 천천히 생각을 거쳐서 문제를 풀어보시고

답안을 확인해보세요

입출력예시

입출력예시1(x가 최소값인 경우)

3개의 정수를 입력하시오: 20 40 60
최소값은 20입니다. 

입출력예시2(y가 최소값인 경우)

3개의 정수를 입력하시오: 30 10 20
최소값은 10입니다.

입출력예시3

3개의 정수를 입력하시오: 40 20 11
최소값은 11입니다. 

코드힌트

더보기

매크로를 만드는 방법

#define MIN(x,y) (x)<(y)?(x):(y)

MIN(x,y)라는 매크로를 만들었고 x < y가

참이라면 x를 반환하고, 거짓이라면 y를 반환합니다.

우린 이 매크로를 이용하여 3가지 변수를 갖는 프로그램을 작성하고자합니다.

#define GET_MIN(x,y,z) (MIN(x, y))<(z)?(MIN(x, y)):(z)

 GET_MIN(x,y,z)를 해석해겠습니다.

x, y 가 z보다 작다면  x,y중에 작은 값을 반환하는 MIN매크로를 이용하고

x,y 가 z보다 크다면 z값을 반환하는 값을 만들었습니다.

아래는 프로그램의 기본틀입니다 작성해보시고 결과값을 확인해주세요

#include <stdio.h>

#define 						//x,y 중 작은 값 반환하는 MIN(x,y)를 작성

#define							//x,y,z중 작은 값 반환하는 GET_MIN(x,y,z)를 작성

int main(void) {

	int x, y, z, result;

	printf("3개의 정수를 입력하시오: ");		

	scanf("%d %d %d", &x, &y, &z);			//x,y,z입력

	result = GET_MIN(x, y, z);		//매크로 GET_MIN을 이용하여 result에 가장 작은 값 저장

	printf("최소값은 %d입니다. ", result);		//출력

	return 0;

}

 

답안코드

더보기
#include <stdio.h>

#define MIN(x,y) (x)<(y)?(x):(y)						//x,y 중 작은 값 반환

#define GET_MIN(x,y,z) (MIN(x, y))<(z)?(MIN(x, y)):(z)	//x,y,z중 작은 값 반환

int main(void) {

	int x, y, z, result;

	printf("3개의 정수를 입력하시오: ");		

	scanf("%d %d %d", &x, &y, &z);			//x,y,z입력

	result = GET_MIN(x, y, z);		//매크로 GET_MIN을 이용하여 result에 가장 작은 값 저장

	printf("최소값은 %d입니다. ", result);		//출력

	return 0;

}

 

 

 

 

더 많은 C언어 글이 궁금하다면?

https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4

 

댓글