본문 바로가기
STUDY/C

[모각코 C언어 메이트 심화편] 2차원 배열 | 행과 열 바꾸기 | 꼼꼼히 살피기!!!

by 23g 2022. 2. 24.

미치겠넹

하면서 겪은 우여곡절 코드들을

블로그에 저장해놨는데

다 날라가버렸어~

 

그래도 기억을 되짚으며 포스팅!

 

오늘은 2차원 배열을 배우는 날!

[][]

2차원 배열이란, 바로 '배열의 집합'

 

 2차원 배열의 선언

자료형 배열이름[행 갯수][열 갯수];

자료형 배열이름[행 갯수][열 갯수] = { 
		{ 값, 값, 값, ... }
		{ 값, 값, 값, ... }
		...
};
 

 인덱스

// 값 수정
배열이름[행인덱스][열인덱스] = 값;

// 배열이 int형일 때, 값 출력
printf("%d", 배열이름[행인덱스][열인덱스]);
 

 2차원 배열의 크기

sizeof(배열의 이름[][])
 

 정리하기 

✔ 여러 개의 배열이 필요하면 2차원 배열을 사용하자!

✔ 배열의 값을 수정하고 싶으면? 인덱스 사용!

✔ sizeof( ) 함수를 이용해서 행의 크기 혹은 열의 크기를 구할 수 있다!

 

오늘의 문제!

 

음 ,, 단골 문제네요

분명 예전에 풀어봤지만

순간 헷갈려서

for에서 i, j 순서 바꾸는

대참사 발생~

얼릉 정신 차려서

printf에서

arr[i][j]->arr[j][i]로!

#define _CRT_SECURE_NO_WARNINGS    
#include <stdio.h>

int main(void)
{
    int arr[4][4];

    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }

    printf("\n 변경 전 : \n"); 
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }

    printf("\n 변경 후 : \n"); 
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%d ", arr[j][i]);
            }
            printf("\n");
        }
    return 0;
}
 

이렇게 잘 작성 한 줄 알았는데

이게 뭥미

자꾸 엉망진창 결과가 나오는 것이었다 ㅠㅠ

 

정말,,이해가 안가서

한참이나 골머리를 앓았는데

 

황당황당 대황당 이유

for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
 

바로 여기서 for (int j = 0; j < 3; j++)

...

4가 아니라 3을 써서 그런 것이었다,,,^^^!!!으악

코딩이 이래서 아주 사람을 미치게 해~

최종 코드!

#define _CRT_SECURE_NO_WARNINGS    
#include <stdio.h>

int main(void)
{
    int arr[4][4];

    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }

    printf("\n 변경 전 : \n"); 
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }

    printf("\n 변경 후 : \n"); 
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%d ", arr[j][i]);
            }
            printf("\n");
        }
    return 0;
}
 

최종 결과!

심화 내용 추천!

결과 창에서

예쁘게~ 바르게 정렬하기!