본문 바로가기
지난 학기들의 기록/C 기초

[C실습] 배열 실습문제 11~13번 풀이

by 아메리카노와떡볶이 2020. 5. 21.
728x90

기초적인 2차원 배열 구현 문제

 문제 11번은 설명 생략하겠습니다.

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
#pragma warning(disable:4996)
#include <stdio.h>
 
/*학생 3명의 국어, 영어 성적이 있다.
- 이 자료를 저장하기 위한 2차원 배열을 선언 하시오.
- 학생 별 국어와 영어 성적을 사용자로부터 입력 받으시오.
- 학생 별 국어와 영어 성적의 합을 각각 출력하시오.*/
int main() {
 
 
    int grade[3][2];
    int sum[3= { 0 };
    for(int i=0;i<3;i++){
 
    for(int j=0;j<2;j++){
    scanf("%d"&grade[i][j]);
                        }
    }
 
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            sum[i]= sum[i]+ grade[i][j];
        }
    }
    for (int i = 0; i < 3; i++) {
        printf("%d\n", sum[i]);
    }
    
    return 0;
}
cs

또한 설명생략

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#pragma warning(disable:4996)
#include <stdio.h>
 
/*숫자에 해당하는 영어 출력하기.*/
int main() {
 
 
    char x[6][5=
    {
        {'Z','E','R','O','-'},
    {'O','N','E','-','-'},
    {'T','W','O','-','-'},
    {'T','H','R','E','E'},
    {'F','O','U','R','-'},
    {'F','I','V','E','-'},
    };
 
    int num[3];
 
    for (int i = 0; i < 3; i++) {
        scanf("%d"&num[i]);
    }
    
    for (int i = 0; i < 3; i++) {
        int j = 0;
 
        if (num[i] == 0) {
            while (j < 5) {
                printf("%c", x[0][j]);
                j++;
 
            }
            puts("");
        }
        else if (num[i] == 1) {
            while (j < 5) {
                printf("%c", x[1][j]);
                j++;
 
            }
            puts("");
        }
        else if (num[i] == 2){
            while (j < 5) {
            printf("%c", x[2][j]);
            j++;
 
        }
        puts("");
    }
        else if (num[i] == 3) {
            while (j < 5) {
                printf("%c", x[3][j]);
                j++;
 
            }
            puts("");
        }
        else if (num[i] == 4) {
            while (j < 5) {
                printf("%c", x[4][j]);
                j++;
            }
            puts("");
        }
        else {
            while (j < 5)
            {
                printf("%c", x[5][j]);
                j++;
 
            }
            puts("");
        }
    }
    return 0;
}
cs

 

 

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#pragma warning(disable:4996)
#include <stdio.h>
 
/* 2차원 배열 x에 3X3 정수로 된 행렬을 입력하시오. 
- 2차원 배열 y에 2X2 정수로 된 행렬을 입력하시오.
- x 행렬에서 y 행렬이 어디에 있는지, x에서 y 행렬 시작위치의 행 번호와 열 번호를 출력하시오. 
(여러 개 있는 경우 첫 번째 나타나는 y 행렬의 행 과 열 번호를 쓰시오)  
- 없는 경우에는 “none”을 출력하시오.*/
 
int main() {
 
    int x[3][3];
    int y[2][2];
    int a = 0, b = 0;
    int cnt = 0;
    // 입력파트
    for (int i = 0; i < 3; i++) {
        
        for (int j = 0; j < 3; j++) {
 
            scanf("%d"&x[i][j]);
        }
    }
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
 
            scanf("%d"&y[i][j]);
        }
    }
 
    // 출력파트
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf(" %d", x[i][j]);
        }
        puts("");
    }
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
 
            printf(" %d", y[i][j]);
        }
        puts("");
    }
 
    for (int p = 0; p < 2; p++) {
        for (int q = 0; q < 2; q++) {
            a = 0, b = 0;
            if(x[p][q] == y[a][b]) {
                
                q++;
                b++;
                if (x[p][q] == y[a][b]){
                    p++;
                    a++;
                    if (x[p][q] == y[a][b]) {
                        q--;
                        b--;
                        if (x[p][q] == y[a][b]&&cnt==0) {
                            printf("%d %d", p - 1, q);
                            cnt++;
                        }
                    }
                    }
 
 
            }
        }
    }
 
 
    if (cnt == 0printf("none");
 
 
    return 0 ;
}
cs

배열 3x3과 2x2의 크기가 정해져있어서 풀은 것이다.

만약 배열의 n1 x n1 과 n2 x n2 를 입력받고 배열 n1에서 n2를 발견하는 것이라면 못풀었을것같다..

 

728x90

댓글