첫째, 왼쪽 위에서 아래로 시작하여 외부에서 내부로 달팽이 모양의 시퀀스 형태의 C 언어 코드입니다.
배열 크기는 코드 상단에서 N으로 정의됩니다.
#include <stdio.h>
#define ROW 7
#define COL 7
int main() {
int arr(ROW)(COL);
int n = 1;
int row_start = 0, row_end = ROW - 1, col_start = 0, col_end = COL - 1;
while (row_start <= row_end && col_start <= col_end) {
// 첫 번째 열부터 마지막 열까지
for (int i = row_start; i <= row_end; i++) {
arr(i)(col_start) = n++;
}
col_start++;
// 마지막 행부터 첫 번째 행까지
for (int i = col_start; i <= col_end; i++) {
arr(row_end)(i) = n++;
}
row_end--;
// 마지막 열부터 첫 번째 열까지
for (int i = row_end; i >= row_start; i--) {
arr(i)(col_end) = n++;
}
col_end--;
// 첫 번째 행부터 마지막 행까지
for (int i = col_end; i >= col_start; i--) {
arr(row_start)(i) = n++;
}
row_start++;
}
// 출력
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%3d", arr(i)(j));
}
printf("\n");
}
return 0;
}
다음 코드는 바깥쪽에서 안쪽으로, 왼쪽 위에서 오른쪽으로(시계 방향) 달팽이 모양의 시퀀스를 시작하는 C 언어 코드입니다.
배열 크기는 코드 상단에서 N으로 정의됩니다.
#include <stdio.h>
#define ROW 7
#define COL 7
int main() {
int arr(ROW)(COL);
int n = 1;
int row_start = 0;
int row_end = ROW - 1;
int col_start = 0;
int col_end = COL - 1;
while (row_start <= row_end && col_start <= col_end) {
// 첫 번째 열부터 마지막 열까지
for (int i = col_start; i <= col_end; i++) {
arr(row_start)(i) = n++;
}
row_start++;
// 첫 번째 행부터 마지막 행까지
for (int i = row_start; i <= row_end; i++) {
arr(i)(col_end) = n++;
}
col_end--;
// 마지막 열부터 첫 번째 열까지
for (int i = col_end; i >= col_start; i--) {
arr(row_end)(i) = n++;
}
row_end--;
// 마지막 행부터 첫 번째 행까지
for (int i = row_end; i >= row_start; i--) {
arr(i)(col_start) = n++;
}
col_start++;
}
// 출력
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%3d", arr(i)(j));
}
printf("\n");
}
return 0;
}
위의 코드를 적절하게 수정하면 원하는 방향으로 숫자를 입력할 수 있습니다.
출력의 모양을 변경하지 마십시오.
반응형
다음과 같이 표현할 수도 있습니다.
#include <stdio.h>
#define n 7
int main()
{
int arr(n)(n);
int i, j, k = 1;
for (i = 0; i < n; i++) {
for (j = i; j < n - i; j++) {
arr(i)(j) = k++;
}
for (j = i + 1; j < n - i; j++) {
arr(j)(n - i - 1) = k++;
}
for (j = n - i - 2; j >= i; j--) {
arr(n - i - 1)(j) = k++;
}
for (j = n - i - 2; j > i; j--) {
arr(j)(i) = k++;
}
}
// 출력
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%3d", arr(i)(j));
}
printf("\n");
}
return 0;
}