chj9739   7년 전

#include <stdio.h>

int main(void)
{
       int i,j,k,n;
       scanf("%d", &n);

        for (i = 0; i < n; i++)
        {
             for (j = 2; j <= n-i; j++)
                printf(" "); 
              for (k = 0; k <= i; k++)
                printf("*"); 
                  printf("\n");
           }
           return 0;
}

코드를 이렇게 짰는데요 저기 j=2를 0으로 해주면 두칸 띄어서 출력되는데 왜 그런건가요??

sgc109   7년 전

위의 소스코드에서 for(j = 2; j <= n-i; j++) 라는 식은 

j 가 처음에 2이고 j가 n-i 일때 까지 돌고 끝나는 것이므로 총 (n-i-2+1) 번, 즉 n-i-1번 돌게됩니다.

그러나 j = 0 으로 하면 j 가 처음에 0으로 시작하는데 끝은 같으므로 j가 0일때와 1일때 두번 더도는것이고, 총 (n-i-0+1) 번, 즉 n-i+1 돌기때문에 for문 내의 

빈칸을 출력하는 코드가 두번 더 실행돼서 각각의 행에서 맨앞에 빈칸이 두개씩 더 출력되어서 나오는 것입니다.

chj9739   7년 전

감사합니다

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