작성
·
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행: *****
원래 이렇게 나와야 정상아닐까요?
한 번만 도와주세요...
답변 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;
}
위와 같이 변경하면 원하시는 상자 모양의 출력이 나올 것입니다.
이미지에서 “형식” 과 “형” 이라는 글자가 반복되어 있는 것으로 보아, 어떤 반복되는 형식이나 항목을 나타내는 것 같습니다. 마지막 “형”은 잘려서 혹은 의도적으로 줄여 쓰인 것 같습니다. 이미지만으로는 정확한 내용을 파악하기 어렵지만, 리스팅이나 카운팅을 위한 메모로 추측됩니다.
도움이 필요하시면 언제든 문의해주세요.