gusdnd1204   6년 전

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

제가 한 코딩이 이렇게 인데 출력이 잘되는데 출력형식의 오류라고 뜨네요 왜그렇죠?

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

이건 처음에 제가 한 코딩인데 왜 처음 for문에서 i<=a랑 같아요 별갯수가 a갯수까지 나올까요 전 처음에 i<a라 생각해서 햇더니 별갯수가 하나씩 적게 나와서 묻습니다 ㅠㅠ

mystika   6년 전

i의 초기값이 0이기 때문입니다.

예를들어 a=5, i=0일때 첫번째 for문의 조건이 a-i=5라서 j는 [0, a)만큼 루프를 돌아 공백은 5개 출력되는데 두번째 for문에서는 j=0이고 조건인 j<i. 여기서 i는 0이니 j<i는 항상 false라서 반복을 하지 않고 그대로 나오게 됩니다. 그래서 항상 첫줄에 a만큼의 공백을 출력하는 빈 줄이 생겨 잘못된 결과를 받게됩니다.

댓글을 작성하려면 로그인해야 합니다.