강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

이정우 (ash island fa님의 프로필 이미지
이정우 (ash island fa

작성한 질문수

한 번만 도와주세요 ㅜㅠㅠㅠㅠ

작성

·

185

0

int main(void)

{

int cnt, star;

for (cnt = 1; cnt <= 6; cnt++)

{

printf("%d행 : ", cnt);

for (star = 1; star <= 5; star++)

{

if ((cnt == 1 || cnt == 6) || (star == 1 || star == 5))

{

printf("*");

}

else

{

printf("");

}

}

printf("\n");

}

return 0;

}

이 코드의 결과 값이 왜 이렇게 나올까요?

1행: *****

2행: **

3행: **

4행: **

5행: **

6행: *****

원래 이렇게 나와야 정상아닐까요?

KakaoTalk_20231125_230350568.jpg

한 번만 도와주세요...

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이정우님(ash island fa님), 제공해주신 코드 분석을 도와드리겠습니다. 코드 내용을 보면 별(*)을 이용하여 상자 모양의 패턴을 출력하시려는 것 같은데, 내부 for문 내에서 별을 출력할 조건과 아닌 경우를 구분하고 있습니다.

문제는 else 구문에서 “printf(”“)“와 같이 아무 문자도 출력하지 않고 있기 때문입니다. 이를 공백 문자 “printf(” “)“로 변경해야 합니다. 그래야 각 행의 별 사이에 공백이 들어가서 올바른 사각형 모양이 출력됩니다.

수정된 코드는 다음과 같습니다:

#include <stdio.h>

int main(void)
{
    int cnt, star;

    for (cnt = 1; cnt <= 6; cnt++)
    {
        printf("%d행 : ", cnt);
        for (star = 1; star <= 5; star++)
        {
            if ((cnt == 1 || cnt == 6) || (star == 1 || star == 5))
            {
                printf("*");
            }
            else
            {
                printf(" "); // 공백 문자를 넣어줘야 합니다.
            }
        }
        printf("\n");
    }
    return 0;
}

위와 같이 변경하면 원하시는 상자 모양의 출력이 나올 것입니다.

이미지에서 “형식” 과 “형” 이라는 글자가 반복되어 있는 것으로 보아, 어떤 반복되는 형식이나 항목을 나타내는 것 같습니다. 마지막 “형”은 잘려서 혹은 의도적으로 줄여 쓰인 것 같습니다. 이미지만으로는 정확한 내용을 파악하기 어렵지만, 리스팅이나 카운팅을 위한 메모로 추측됩니다.

도움이 필요하시면 언제든 문의해주세요.

이정우 (ash island fa님의 프로필 이미지
이정우 (ash island fa

작성한 질문수

질문하기