본문 바로가기

C 언어/연습문제

C언어 연습문제28

[문제]

길이가 4x4인 int형 2차원 배열을 선언하고, 모든 요소를 아래 그림의 왼쪽에 있는 형태와 동일하게 초기화하자. 그리고 배열의 요소들을 오른쪽 방향으로 90º씩 이동시켜서 그 결과를 출력하는 프로그램을 작성해보자.
참고로 배열이 변경되는 형태는 아래와 같다.

<조건1>
출력을 하는 함수와 90º회전하는 함수 두 개를 만들 것

 

 

 

[실행결과]

 

[코드]

#include<stdio.h>

void ShowArr(int(*arr)[4]);
void RotateArr(int(*arr)[4]);

int main(void)
{
	int i;
	int arr[4][4] = {
		{ 1,  2,  3,  4},
		{ 5,  6,  7,  8},
		{ 9, 10, 11, 12},
		{13, 14, 15, 16}
	};

	for (i = 0; i < 3; i++)
	{
		RotateArr(arr);
		ShowArr(arr);
	}

	return 0;
}

void RotateArr(int(*arr)[4])
{
	int i, j;
	int temp[4][4];

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
			temp[j][3 - i] = arr[i][j];
	}

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
			arr[i][j] = temp[i][j];
	}
}

void ShowArr(int(*arr)[4])
{
	int i, j;

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
			printf("%2d ", arr[i][j]);
		printf("\n");
	}
	printf("\n");
}

 

<참고>

윤성우의 열혈 C 프로그래밍

'C 언어 > 연습문제' 카테고리의 다른 글

C언어 연습문제30  (0) 2022.03.25
C언어 연습문제29  (0) 2022.03.23
C언어 연습문제27  (0) 2022.03.18
C언어 연습문제26  (0) 2022.03.17
C언어 연습문제25  (0) 2021.11.30