ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Layer7_20160323수업_다차원 배열 과제
    예제/Layer7_20160323 2016. 3. 27. 00:28
    반응형

    <1> n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력.

    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() {
        int arr[50][50];
        int i, j;
        int input;
     
        scanf("%d", &input);
     
        for (i = 0; i<input; ++i) {
            for (j = 0; j<input; ++j) {
                arr[i][j] = j + (i*input) + 1;
            }
        }
     
        for (i = 0; i<input; ++i) {
            for (j = 0; j<input; ++j) {
                printf("%d", arr[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    cs


    입력 : 

    3


    출력

    1 2 3

    4 5 6

    7 8 9


    <2> n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력.

    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() {
        int arr[50][50];
        int i, j;
        int input;
     
        scanf("%d", &input);
     
        for (i = 0; i<input; ++i) {
            for (j = 0; j<input; ++j) {
                arr[i][j] = i + (j*input) + 1;
            }
        }
     
        for (i = 0; i<input; ++i) {
            for (j = 0; j<input; ++j) {
                printf("%d", arr[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    cs


    입력 :

    3


    출력 : 

    1 4 7

    2 5 8

    3 6 9


    <3> 지그재그로 출력.

    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
    #include <stdio.h>
     
    int main(){
        int arr[50][50];
        int i, j;
        int input;
     
        scanf("%d", &input);
     
        for (i = 0; i < input; ++i){
            for (j = 0; j < input; ++j){
                if (i % 2 == 1){    //둘째줄, 넷째줄, 여섯째줄, ...
                    arr[i][j] = (i + 1)*input - j;
                }
                else{
                    arr[i][j] = j + 1 + i*input;
                }
            }
        }
        
        for (i = 0; i < input; ++i){
            for (j = 0; j < input; ++j){
                printf("%5d", arr[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    cs


    입력 : 5


    출력 : 

      1  2  3  4  5

     10  9  8  7  6

     11 12 13 14 15

     20 19 18 17 16

     21 22 23 24 25


    <4> 수직으로 지그재그 출력.

    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
    #include <stdio.h>
     
    int main() {
        int arr[50][50];
        int i, j;
        int input;
     
        scanf("%d", &input);
     
        for (i = 0; i < input; ++i) {
            for (j = 0; j < input; ++j) {
                if (j % 2 == 1) {    //(세로로)둘째줄, 넷째줄, 여섯째줄, ...
                    arr[i][j] = (j + 1)*input - i;    //양심고백 : 바로 위 예제에서 i, j위치를 바꿨습니다.
                }
                else {
                    arr[i][j] = i + 1 + j*input;    //양심고백 : 요것두요 ㅎ
                }
            }
        }
     
        for (i = 0; i < input; ++i) {
            for (j = 0; j < input; ++j) {
                printf("%5d", arr[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    cs


    입력 : 

    3


    출력 : 

    1 6 7

    2 5 8

    3 4 9


    <5> 길이가 n인 숫자가 입력되고, 천단위마다 콤마를 넣어서 출력.

    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
    /*
    길이를 입력받은 것으로 보아, 그 길이를 이용하여 ','를 찍는것 같다.
    */
    #include <stdio.h>
     
    int main(){
        char arr[270];
        int length;
        int i, j;
        int count=3, comma;
     
        scanf("%d", &length);
        scanf("%s", arr);
     
        comma = (length-1/ 3;            //만약 길이가 3으로 나누어 떨어지는 수라면, comma는 3개가 아니라 2개가 찍혀야 한다.
        arr[length + comma + 1= '\0';
     
        for (i = length-1; i >=0--i){
            if (comma == 0)                //찍어야 하는 ',' 개수가 0일때 종료
                break;
            arr[i + comma] = arr[i];    //남은 ',' 개수대로 뒤로 미루기
            --count;
            if(count==0){
                arr[i + comma - 1= ',';
                --comma;
                count = 3;
            }
     
        }
        printf("%s", arr);
        return 0;
    }
    cs


    입력 :

    8

    12421421


    출력 : 

    12,421,421


    <6> n이 입력되면 크기가 n인 다음과 같은 2차원 배열을 출력.(달팽이 모양으로 숫자 나열)

    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
    #include <stdio.h>
     
    int main(){
        int arr[50][50= { {0,},{0,} };
        int input;
        int i, j, k;
        int number=1;//현재 위치에 넣을 수
        int state; //동=state%4==0, 남=state%4==1, 서=state%4==2, 북=state%4==3
     
        scanf("%d", &input);
     
        for (state = 0; state < (input*2)-1++state){                    //동서남북의 변환이 몇번 일어나는지
            if (state % 4 == 0) {                                //동
                for (k = state / 4; k <= input - state / 4 - 1++k) {
                    arr[state / 4][k] = number;
                    ++number;
                }
            }
     
            if (state % 4 == 1) {                                //남
                for (k = state / 4 + 1; k <= input - state / 4 - 1++k) {            //겹치면 안되니 초기식에 +1
                    arr[k][input - state / 4 - 1= number;
                    ++number;
                }
            }
     
            if (state % 4 == 2) {                        //서
                for (k = state / 4; k <input - state / 4 - 1++k) {                //겹치면 안되니 초기식에 -1
                    arr[input - state / 4 - 1 ][input-k-1-1= number;
                    ++number;
                }
            }
     
            if (state % 4 == 3) {                                //북
                for (k = state / 4 + 1; k <input - state / 4 - 1++k) {
                    arr[input-k-1][state / 4= number;
                    ++number;
                }
            }
        }
     
        for (i = 0; i < input; ++i){
            for (j = 0; j < input; ++j){
                printf("%5d", arr[i][j]);
            }
            printf("\n");
        }
     
        return 0;
    }
    cs


    입력 : 

    4


    출력 : 

     1  2   3  4

    12 13 14  5

    11 16 15  6

    10  9  8  7

    반응형

    '예제 > Layer7_20160323' 카테고리의 다른 글

    (추가) 달팽이 배열  (2) 2017.03.28
    Layer7_20160323수업_2의2000제곱(2의 2000승)  (0) 2016.03.24
    Layer7_20160323수업  (0) 2016.03.24

    댓글

Designed by Tistory.