Layer 7 02 과제 최솟값, 최댓값 구하기(if, switch, 삼항 연산자)

2019. 3. 23. 17:39layer7

1. 최솟값 구하기(if, switch, 삼항 연산자)


# 1-1. if문을 사용하여 최솟값 구하기 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
 
int main()
{
    //정수 3개를 저장할 변수 a,b,c;
    int a, b, c;
    //가장 작은 값을 저장할 변수 min
    int min;
    printf("Input(a,b,c): "); scanf("%d %d %d"&a, &b, &c);
 
    if (a >= b)
        min = b;
    else
        min = a;
    if (min > c)
        min = c;
 
    printf("min: %d\n", min);
 
    return 0;
}
cs



# 1-2. switch문을 사용하여 최솟값 구하기 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
 
int main()
{
    //정수 3개를 저장할 변수 a,b,c;
    int a, b, c;
    //가장 작은 값을 저장할 변수 min
    int min;
    printf("Input(a,b,c): "); scanf("%d %d %d"&a, &b, &c);
 
    switch (a - b)
    {
    case 0:case 1: min = b;
    default: min = a;
    }
 
    switch (int(min>c)) //min>c만 사용하면 관계식을 제어식으로 사용하여 오류가 나옵니다.(C4144)
    { //그래서 min>c의 값을 정수형으로 형변환 하였습니다.
    case 1: min = c;
    }
 
    printf("min: %d\n", min);
 
    return 0;
 
    
     
}

cs



# 1-3. 삼항 연산자를 사용하여 최솟값 구하기 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<windows.h>
 
int main()
{
    Sleep(1000);
    //정수 3개를 저장할 변수 a,b,c;
    int a, b, c;
    //가장 작은 값을 저장할 변수 min
    int min;
    printf("Input(a,b,c): "); scanf("%d %d %d"&a, &b, &c);
 
    min = a <= b ? a : b;
    min = min > c ? c : min;
 
    printf("min: %d\n", min);
 
    return 0;
}
cs



# 원리(1) 

먼저, 변수 a, b의 값을 비교하여

  작은 값을 min이라는 변수에 저장합니다. 

  그 후 변수  min과 c를 비교하여 

  c가 min 보다 더 작을 경우 min에 c를 저장하고,

  출력합니다.


-  if, switch, 삼항 연산자를 사용했다는 점은 

   같으며, 나머지 문제를 푸는 방법은 같습니다. 




1. 최댓값 구하기(if, switch, 삼항 연산자)


# 2-1. if문을 사용하여 최댓값 구하기 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
int main()
{
    //정수를 입력 받을 변수 3개
    int a, b, c;
    //최댓값을 저장할 변수 max
    int max;
 
    printf("Input(a,b,c): "); scanf("%d %d %d",&a,&b,&c);
 
    
    if (a >= b)
        max = a;
    else
        max = b;
 
    if (max < c)
        max = c;
 
    printf("Max: %d\n", max);
 
    return 0;
}
cs


# 2-2. switch문을 사용하여 최댓값 구하기 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
 
int main()
{
    //정수를 입력 받을 변수 3개
    int a, b, c;
    //최댓값을 저장할 변수 max
    int max;
 
    printf("Input(a,b,c): "); scanf("%d %d %d"&a, &b, &c);
    
    switch (a-b)
    {
        case 0:case 1: max = a;
        default: max = b;
    }
 
    switch (int(max<c)) //min<c만 사용하면 관계식을 제어식으로 사용하여 오류가 나옵니다.(C4144)
    { //그래서 min<c의 값을 정수형으로 형변환 하였습니다.
        case 1: max = c;
    }
 
    printf("max: %d\n", max);
    return 0;
}

cs


# 2-3. 삼항 연산자를 사용하여 최댓값 구하기 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
 
int main()
{
    //정수를 입력 받을 변수 3개
    int a, b, c;
    //최댓값을 저장할 변수 max
    int max=0;
 
    printf("Input(a,b,c): "); scanf("%d %d %d"&a, &b, &c);
 
    max = max = a > b ? a : b;
    max = max < c ? c : max;
 
    printf("max: %d\n", max);
    return 0;
}
cs



# 원리(2) 

먼저, 변수 a, b의 값을 비교하여

  큰 값을 max이라는 변수에 저장합니다. 

  그 후 변수  max과 c를 비교하여 

  c가 max 보다 더 클 경우 max에 c를 저장하고

  출력합니다.  

-  if, switch, 삼항 연산자를 사용했다는 점은 

   같으며, 나머지 문제를 푸는 방법은 같습니다.