c언어 초보자 코드 해석좀 부탁드려요 ㅠㅠㅠ

#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int i, j;
for (i = 1; i <= n; i++) {
for (j = 1; j < i; j++) {
printf(" ");
}

    for (j = 1; j <= (n  - ( i - 1)); j++) { 
        
        if (i == 1 || j == 1 || j == (n - ( i - 1))) { 
            printf("*");
        } else {
            printf(" "); 
        }
    }
    printf("\n"); 
}
return 0;

}

속이 빈 역 직각삼각형 찍는 코드인데 이 코드가 작동하는 방법이 뭔지 정말 모르겠어요 ㅠㅠ 첫번째 printf(" “)부터 두번째 printf(”*") 그리고 왜 if (i == 1 || j == 1 || j == (n - ( i - 1)))인지 … 정말 모르겠습니다… ㅠㅠ 차근차근 해설해주시면 정말 감사하겠습니다 …

일단 n을 특정 상수로 정하시고 연습해보세요. 예를들면 '5’로 정해보세요.

연습장에 펜을가지고 각 좌표에 따라 O, X로 표기하시면서 그리고 싶은 원하는 도형을 그려보세요

o o o o o (0,0) (0,1) (0,2) (0,3) (0,4)
o x x x o (1,0) (1,1) (1,2) (1,3) (1,4)
o x x x o (2,0) (2,1) (2,2) (2,3) (2,4)
o x x x o (3,0) (3,1) (3,2) (3,3) (3,4)
o o o o o (4,0) (4,1) (4,2) (4,3) (4,4)

그다음에 옆에는 그 모양에 따른 좌표를 다 써보시고 i, j를 이용해서 이중 반복문 형태를 만든다음에

속빈 사각형부터 만들어보세요. 그걸 만족하기 위해선 어떤 조건일때 *를 출력하고

어떤 조건일때 공백을 채워야할지 스스로 고민해보시구요.

질문 마지막에 if 조건문의 내용은 삼각형의 대각선 형태를 출력하기 위한 수단이라고 힌트를 드리면 될거같아요

이런 문제는 본인이 반복문의 절차에 대해 하나하나 생각해보는 시간을 가져보라는 차원에서 주어지는 과제입니다.

2 Likes

정말 감사합니다 !! 연습해보겠습니다 … !!