조건연산자, 매크로 값을 이용하여 최소값을 만들어내는 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
댓글