티스토리 뷰

C언어 강의

C언어 나비 별찍기 # for while

코딩나우 2020. 4. 21. 20:06
반응형

for whileC언어 별찍기 # for while

모든 강의 자료 : www.codingnow.co.kr/

아래 그림과 같이 별을 for, while을 이용하여 표현해 보자.

표현할 별의 수를 입력 받는다.

num = num +1은 입력 받은 수에서 하나더 찍어 보기 위해서 넣었다.

printf("Enter number : ");
scanf("%d",&num);

num = num +1;

입력 수에서 2배를 찍어야 한다.

while(cnt<num*2)
{

}

입력수에서 증감하는 방향과 감소하는 방향을 잡아 준다.

5입력 하면 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0으로 step이 증감한다.

if((cnt%num) == 0)
{
  location = ~location;

  if(location)
  {
  	step = 0;
  }else{
  	step = num;
  }
}

if(location)
{
	step++;
}else{
	step--;
}

왼쪽 오른쪽의 별을 for루프를 증감방향 감소 방향으로 구현한다.

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

전체 소스코드 이다.

#include <stdio.h>

int main(void)
{	
  int num;
  printf("Enter number : ");
  scanf("%d",&num);

  num = num +1;

  int cnt = 0;
  int step = 0;
  char location = 0;

  while(cnt<num*2)
  {
    if((cnt%num) == 0)
    {
      location = ~location;

      if(location)
      {
      	step = 0;
      }else{
      	step = num;
      }
    }

    if(location)
    {
    	step++;
    }else{
    	step--;
    }

    for(int i=0; i<num; i++)
    {
      if(i<step){
      	printf("*");
      }else{
      	printf(" ");
      }
    }
    
    for(int i=(num-1); i>-1; i--)
    {
      if(i<step){
      	printf("*");
      }else{
      	printf(" ");
      }
    }
    printf("\n");
    cnt++;
  }

  return 0;
}
반응형