안녕하십니까! 오늘은 간단하게 세 수중 가장 큰 수, 가장 작은 수를 출력하는 방법에 대해 알아보도록 하겠습니다. C언어를 배울때 많이 사용되는 예제이기도 하지요.
max함수의 원리는 다음과 같습니다.
1. 만약 세수 a, b, c가 입력되었을때
2-1. a가 b보다 크다면, a와 c중 큰 것을 반환한다.
2-2. b가 a보다 크다면, b와 c중 큰것을 반환한다.
간단하죠?
min함수의 원리도 max함수와 거의 유사합니다.
1. 만약 세 수 a, b, c가 입력되었을때,
2-1. a가 b보다 작다면, a와 c중 작은 것을 반환한다.
2-1. b가 a보다 작다면, b와 c중 작은 것을 반환한다.
그럼 이제 이것에 맞추어 코드를 작성해봅시다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int max(int a, int b, int c) {
if (a > b) {
return (a > c) ? a : c;
}
else {
return (b > c) ? b : c;
}
}
int min(int a, int b, int c) {
if (a < b) {
return (a < c) ? a : c;
}
else {
return (b < c) ? b : c;
}
}
int main(void) {
int a, b, c;
printf("three number : ");
scanf("%d %d %d", &a, &b, &c);
printf("max number : %d\n", max(a, b, c));
printf("min number : %d\n", min(a, b, c));
return 0;
}
main이게 세 수를 입력받은 뒤, max, min함수에서 계산한 max, min값을 수정하고 있습니다.
#define CRT_SE . . . 는 visual studio에서 scanf를 사용하면 보안 경고가 뜨기 떄문에, 이를 막는 용도로 사용되었습니다.
만약 visual studio에서 코딩을 하고 있지 않으며, 제거해도 무방한 부분입니다.
우리는 이 함수를 더 줄일 수도 있습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int max(int a, int b, int c) {
return (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
}
int min(int a, int b, int c) {
return (a < b) ? ((a < c) ? a : c) : ((b < c) ? b : c);
}
int main(void) {
int a, b, c;
printf("three number : ");
scanf("%d %d %d", &a, &b, &c);
printf("max number : %d\n", max(a, b, c));
printf("min number : %d\n", min(a, b, c));
return 0;
}
대부분의 소스는 전과 같으나, if ... else문이 삼항연산자로 대체되었습니다. 물론 이전에 만든 코드와 원리도 같으며, 성능도 거의 똑같습니다.
상황에 따라 두 소스중 적절한 것으로 골라 사용하시면 될것 같네요~
그럼 제는 이쯤에서 글을 줄이도록 하겠습니다.
좋은 하루 되세요~.
'C C++ language' 카테고리의 다른 글
C언어 입력받은 글자또는 문자 출력 방법 (0) | 2021.03.13 |
---|---|
C언어 " 큰따음표와 ' 작은 따음표의 차이점 (0) | 2021.03.06 |
C언어 십진법 이진법 변환기 [with source] (0) | 2021.02.27 |
C언어 문자 아스키코드로 출력하는 방법 [with source] (0) | 2021.02.24 |
C언어 이진법 to 십진법 변환기 [with source] (0) | 2021.02.20 |