Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 정사각 행렬을 Z자 형태로 출력하는 프로그램


프로그램 개요

이 프로그램은 정사각 행렬의 요소들을 Z자 형태로 출력합니다. 정사각 행렬이란 행과 열의 개수가 동일한 행렬을 의미하며, n개의 행과 n개의 열로 구성된 행렬을 n차 정사각 행렬이라고 부릅니다.

Z 형태 출력이란 행렬의 요소를 영문 대문자 'Z'를 그리듯이 순서대로 읽어내는 방식을 말합니다.

알고리즘

C 언어로 정사각 행렬을 Z자 형태로 출력하는 프로그램

정사각 행렬을 Z 형태로 출력하기 위해서는 다음 세 가지 부분을 순서대로 출력해야 합니다.

  • 첫 번째 행: 행렬의 맨 윗줄에 있는 모든 요소를 왼쪽에서 오른쪽으로 출력합니다.
  • 반대 대각선: 오른쪽 상단에서 왼쪽 하단으로 이어지는 대각선 요소를 출력합니다.
  • 마지막 행: 행렬의 맨 아랫줄에 있는 모든 요소를 왼쪽에서 오른쪽으로 출력합니다.

이 세 부분이 연결되면 마치 알파벳 'Z'와 같은 형태가 됩니다.

C 언어 예제 코드

/* 정사각 행렬을 Z 형태로 출력하는 프로그램 */
#include<stdio.h>
int main(){
    int rows, cols, r, c, matrix[10][10];
    clrscr(); /* 화면 지우기 */
    printf("정사각 행렬의 행 수를 입력하세요: ");
    scanf("%d", &rows);
    printf("\n");
    printf("정사각 행렬의 열 수를 입력하세요: ");
    scanf("%d", &cols);
    printf("\n");
    printf("행렬의 요소를 입력하세요: \n");
    for(r = 0; r < rows; r++){
        for(c = 0; c < cols; c++){
            scanf("%d", &matrix[r][c]);
        }
    }
    printf("정사각 행렬의 Z 형태 요소는 다음과 같습니다: ");
    printf("\n");
    /* 첫 번째 행 출력 */
    for(r = 0; r < rows; r++){
        printf("%d\t ", matrix[0][r]);
    }
    /* 반대 대각선 출력 */
    for (r=1, c=cols-2; r<cols && c>=0; r++, c--){
        printf("%d\t ", matrix[r][c]);
    }
    /* 마지막 행 출력 */
    for (r = 1; r < cols; r++){
        printf("%d\t ", matrix[cols-1][r]);
    }
    getch();
    return 0;
}

코드 설명

  • 입력 부분: 중첩된 for 루프를 사용하여 사용자로부터 행렬의 크기와 각 요소를 입력받아 2차원 배열 matrix[10][10]에 저장합니다.
  • 첫 번째 루프: matrix[0][r]에 접근하여 첫 번째 행의 모든 요소를 출력합니다.
  • 두 번째 루프: 행 인덱스 r는 1부터 증가하고, 열 인덱스 ccols-2부터 감소하면서 오른쪽 위에서 왼쪽 아래로 이어지는 반대 대각선 요소를 출력합니다.
  • 세 번째 루프: matrix[cols-1][r]에 접근하여 마지막 행의 나머지 요소를 출력합니다.

참고로 clrscr()getch() 함수는 Turbo C 계열 컴파일러에서 제공되는 함수로, 최신 컴파일러(GCC 등)에서 사용하려면 #include<conio.h> 헤더가 필요하거나 해당 호출을 제거해야 할 수 있습니다.

실행 결과

C 언어로 정사각 행렬을 Z자 형태로 출력하는 프로그램