C++/summary

for문을 이용한 도형출력

gandus 2009. 9. 6. 21:20


#include<stdio.h>

int main(void)
{
 int num, i,j;
 
 printf("3~20까지 숫자를 입력하세요 : ");
 scanf("%d",&num);
 
 printf("사각형\n");

 for(i=0;i<num;i++)
 {
  for(j=0;j<num;j++)
  {
   printf("*");
  }
  printf("\n");
 }

 printf("사각형 빵꾸\n");

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

 printf("사다리\n");
 
 for(i=0;i<num;i++)
 {
  for(j=i;j<num;j++)
  {
   printf(" ");
  }
  for(j=0;j<num;j++)
  {
   printf("*");
  }
  printf("\n");
 }

 printf("사다리 빵꾸\n");
 
 for(i=0;i<num;i++)
 {
  for(j=i;j<num;j++)
  {
   printf(" ");
  }
  for(j=0;j<num;j++)
  {
   if(j==0 || j==num-1 || i==0 || i==num-1)
   {
    printf("*");
   }
   else
   {
    printf(" ");
   }
  }
  printf("\n");
 }

 printf("역 사다리 \n");

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

 printf("삼각형\n");
 
 for(i=1;i<num;i++)
 {
  for(j=i;j<num;j++)
  {
   printf(" ");
  }
  for(j=0;j<i;j++)
  {
   printf("*");
  }
  for(j=1;j<i;j++)
  {
   printf("*");
  }
  printf("\n");
 }

 printf("삼각형 빵꾸 \n");

 for(i=1;i<num;i++)
 {
  for(j=i;j<num;j++)
  {
   printf(" ");
  }
  for(j=0;j<i;j++)
  {
   if(j==0 || i==1 || i==num-1)
   {
    printf("*");
   }
   else
   {
    printf(" ");
   }
  }
  for(j=1;j<i;j++)
  {
   if(j==i-1 || i==1 || i==num-1)
   {
    printf("*");
   }
   else
   {
    printf(" ");
   }
  }
  printf("\n");
 }
 
 printf("좌삼각형 \n");


 //윗쪽 세로
 for(i=1;i<num;i++)
 {
  //위쪽 가로
  for(j=0;j<i;j++) //j 가 i가 될때까지 아래쪽을 실행한다.
  {
   //*을 표시할 것인지 공백을 표시 할 것인지 질문문.
   if(j==0 || j==i-1 || i==1) // 첫번째 칸이거나 마지막 칸이거나 첫번째 줄에는 *을 출력한다.
   {
    printf("*"); //*을 출력한다.
   }
   else
   {
    printf(" "); //첫번째 칸이거나 마지막칸이거나 첫번째 줄이 아니면 공백을 출력한다.
   }
  }
  printf("\n"); //그다음줄로 넘어간다.
 }
 //아래쪽 세로
 for(i=2;i<num;i++) //첫번째줄은 겹치기때문에 i 를 1보다큰 2로 잡는다.
 {
  //아래쪽 가로
  for(j=i;j<num;j++) //i부터 num까지 실행한다.
  {
   //*을 표시할 것인지 공백을 표시 할 것인지 질문문.
   if(j==i || j==num-1 || i==num-1) //첫번째 칸이거나 마지막 칸 이거나 마지막 줄 일때에만 *을 출력한다.
   {
    printf("*"); //*을 출력한다.
   }
   else
   {
    printf(" "); // 첫번째칸이거나 마지막 칸이거나 마지막 줄이 아니면 공백을 출력한다.
   }
  }
  printf("\n"); // 그다음줄로 넘어간다.
 }

 return 0;
}

실행 및 검사는 your mission