반응형
c언어 배열90도씩이동
#include <stdio.h>
int main()
{
int arr[4][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("\n");
for (int i = 0; i < 4; i++)
{
for (int j = 3; j >= 0; j--)
{
printf("%d ", arr[j][i]);
}
printf("\n");
}
printf("\n");
for (int i = 3; i >= 0; i--)
{
for (int j = 3; j >= 0; j--)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("\n");
for (int i = 3; i >=0 ; i--)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", arr[j][i]);
}
printf("\n");
}
return 0;
}
달팽이 배열
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("숫자를 입력하세요:");
scanf("%d", &n);
printf("\n\n");
int** arr = (int**)malloc(sizeof(int*) * n);
for (int i = 0; i < n; i++)
arr[i] = (int*)malloc(sizeof(int) * n);
int count = n; // y축일 경우 1감소
int current = 1; // 대입될 숫자
int direction = 1; // 1 : 증가, -1 : 감소
int directCnt = 0; // 방향 이동 횟수 카운트
int axis = 0; // 0 : x축, 1 : y축
int px = -1;
int py = 0;
// 1. 2번 증가 , 2번 감소
// 2. y축일 경우 축방향 이동 수 1감소
for (int i = 0; i < n*n; i++)
{
for (int j = 0; j < count; j++)
{
if (axis == 0) px += direction;
else if (axis == 1) py += direction;
arr[px][py] = current;
printf(" %d %d %d \n", px, py, arr[px][py]);
current += 1;
}
axis = (axis == 0) ? 1 : 0;
count = (axis == 1) ? count - 1 : count;
directCnt += 1;
if (directCnt == 2)
{
direction *= -1;
directCnt = 0;
}
if (current > n* n) break;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++ )
{
printf("%3d ", arr[j][i]);
}
printf("\n");
}
for (int i = 0; i < n; i++)
free(arr[i]);
free(arr);
return 0;
}
반응형
'Programming > C' 카테고리의 다른 글
c언어 다차원배열 구구단(2,3,4단),성적관리 (0) | 2021.08.14 |
---|---|
c언어 포인터 예제 (0) | 2021.08.14 |
백준 2501 (C언어) (0) | 2021.08.14 |
윤성우의 열혈c프로그래밍 Chapter 20 도전3 ,도전4,도전6 (0) | 2021.08.14 |
c언어 소수구하기 예제 (0) | 2021.08.14 |