본문 바로가기
C/기말고사 대비(2022 1학기)

[C언어 시험대비] 16년 기출(2)

by Meaning_ 2022. 6. 11.
728x90
반응형

 

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<stdio.h>
#include<limits.h>
 
 
void sort(int* arr,int start) {
 
    int temp = arr[start];
    int max = 0;
    int maxIdx = 0;
    for (int i = start; i < 5; i++) {
        if (max < arr[i]) {
            max = arr[i];
            maxIdx = i;
        }
    }
    arr[start] = max;
    arr[maxIdx] = temp;
}
 
int main() {
    int arr[5];
    int target;
    for (int i = 0; i < 5; i++) {
        scanf_s("%d", arr + i);
    
    }
    while (true) {
        scanf_s("%d"&target);
        if (1 <=target && target <= 5) {
            break;
        }
        else {
            printf("다시!!\n");
        }
    }
    printf("배열 = {");
    for (int i = 0; i < 5; i++) {
        if (i == 4) {
            printf("%d", arr[i]);
        }
        else {
            printf("%d, ", arr[i]);
        }
    }
    printf("}\n");
 
 
    for (int i = 0; i < 5; i++) {
        sort(arr, i);
    }
 
    
 
    printf("%d번째 큰 수 = %d\n", target, arr[target-1]);
    
 
}
 
 
 
 
 
cs

 

"다시!"를 통해 여러번 입력받아야 하면 걍 continue보다 while을 쓰자.. 그게 더 편한것 같다..😌

 

그리고 내림차순 정렬을 할때는 sort(배열,시작값)을 넣어줘서 시작값~ 끝값을 순회하면서 가장 큰 값을 max에 넣어준다.

arr[start]=max

arr[maxIndex]=start를 넣어줌으로써 둘이 swap시킨다.

 

만약 오름차순 정렬을 한다면 sort(배열,시작값)을 넣어주는것 까진 똑같고, min에 INT_MAX를 넣어줘야한다.

 

 

728x90
반응형

댓글