본문 바로가기

스터디/코딩

[ 코딩 도장 : C ] Unit 37. 2차원 배열 사용하기 : 연습문제 / 심사문제

37.8 연습문제 : 행렬의 주대각선 성분 구하기

문제 ) 다음 소스 코드를 완성하여 정사각행렬의 주대각선 성분이 출력되게 만드세요. 주대각선 성분은 왼쪽 위부터 오른쪽 아래까지 이어지는 대각선에 위치한 값을 말합니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    int matrix[8][8] = {
        {  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 }
    };

    for (int i = 0; i < sizeof(matrix) / sizeof(matrix[0]); i++)
    {
        printf("%d ", matrix[i][i]);
    }
    printf("%\n");
        return 0;
}

 

 

37.9 심사문제 : 전치행렬 구하기

문제 ) 표준 입력으로 5x5 정사각행렬이 입력됩니다. 다음 소스 코드를 완성하여 입력된 행렬의 전치행렬이 출력되게 만드세요.

전치행렬은 왼쪽 위부터 오른쪽 아래까지의 대각선(주대각선)을 기준으로 값을 뒤집은 행렬을 말합니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    int matrix[5][5];

    scanf("%d %d %d %d %d",
        &matrix[0][0], &matrix[0][1], &matrix[0][2], &matrix[0][3], &matrix[0][4]);
    scanf("%d %d %d %d %d",
        &matrix[1][0], &matrix[1][1], &matrix[1][2], &matrix[1][3], &matrix[1][4]);
    scanf("%d %d %d %d %d",
        &matrix[2][0], &matrix[2][1], &matrix[2][2], &matrix[2][3], &matrix[2][4]);
    scanf("%d %d %d %d %d",
        &matrix[3][0], &matrix[3][1], &matrix[3][2], &matrix[3][3], &matrix[3][4]);
    scanf("%d %d %d %d %d",
        &matrix[4][0], &matrix[4][1], &matrix[4][2], &matrix[4][3], &matrix[4][4]);

    int num1 = sizeof(matrix) / sizeof(matrix[0]);
    int num2 = sizeof(matrix[0]) / sizeof(int);
    int i;
    int j;

    for (i = 0; i < num1; i++)
    {
        for (j = 0; j < num2; j++)
            printf("%d ", matrix[j][i]);

        printf("\n");
    }

        return 0;
}