W 개발 일지

C언어 - While문 이용하여 * 별로 삼각형 만들기 본문

C

C언어 - While문 이용하여 * 별로 삼각형 만들기

waVwe 2020. 10. 6. 21:38
반응형

 

만들고자 하는 삼각형의 모양은 임의의 숫자를 입력받아 그 숫자만큼의 크기의 삼각형을 만들어내는 것이다.

숫자가 5라면 아래와 같은 삼각형이 나와야 한다.

 

*
**
***
****
*****
cs

 

코드를 짜면 다음과 같다.

 

#include <stdio.h>
 
int main() 
{
  int i=1,j,num;
  scanf("%d",&num);
 
  while(i<=num){
    j=1;
    while(j<=i){
      printf("*");
      j++;
    }
    printf("\n");
    i++;
  }
 
  return 0;
}
cs

 

5행 5열이라고 생각하면 이해하기가 조금 더 쉽다.

제일 마지막 줄이 다섯번째이며 다섯개의 별이 찍혀야 하기 때문.

int i=1,j,num;
  scanf("%d",&num);
cs

 

i와 j 그리고 입력받을 숫자의 변수인 num을 선언한다. i는 열, j는 행이고 0행과 0열은 있을 수 없으니

j=1; i=1;로 선언을 해준다.

scanf를 사용하여 num에 숫자를 입력받는다.

while(i<=num){
    j=1;
 
    while(j<=i){
      printf("*");
      j++;
    }
 
    printf("\n");
    i++;
  }
cs

 

while이 두번 쓰인 것을 알 수 있는데 천천히 하나하나 살펴보자면

첫번째 while문은 5열을 찍기 위해 만들었다.

그렇기에 i는 입력받은 숫자만큼의 줄만 뽑아야 하기 때문에

while(i<=num)
cs

 

이와 같이 나온다.

 

두번째 while은 5행의 각 행마다 *별을 찍을 것이다.

1열에 1개, 2열에 2개, 3열에 3개 . . . 찍어야 하므로

while(j<=i){
      printf("*");
      j++;
    }
cs

num이  2라고 가정했을 때 두번째 while문은 1열에 별 1개, 2열에 별 2개를 찍어야 한다.

그러므로 j는 i보다 작거나 같아야 하고,

i가 되기까지 1씩 증가해야 한다. j++;

 

while(i<=num){
    j=1;
 
    while(j<=i){
      printf("*");
      j++;
    }
 
    printf("\n");
    i++;
  }
cs

두번째 while이 끝나 별을 다 찍고 난 뒤에는 \n 개행문자를 찍어 다음 열로 넘어갈 수 있도록 한다.

또한 다음 열로 넘어가게 되니 열의 변수인 i또한 1씩 증가시켜준다. i++;

 

 

위와 같은 코드의 작동 순서를 따져보자면

num이 2일 때 i=1; j=1;

1. i=1이 첫번째 while 통과(i<=num)

2. j=1; 확인 후 두번째 while에 들어감

3. j=1, while(j<=i)이므로 별 한 개 출력 후 j의 1 증가 후 종료

4. 밑으로 내려와 개행문자 출력 그리고 i의 1 증가

5. i=2가 되고 첫번째 while 통과후 두번째 while에 들어감

6. j=1; 확인 후 두번째 while에 들어감

7. j=1. while(j<=i)이므로 별 한개 출력 후 j의 1 증가

8. j=2, i=2  j가 i와 같으므로 한번 더 별 출력 후 종료

9. 밑으로 내려와 개행문자 출력

10. i++;로 i가 num보다 커지기 때문에 종료

 

설명을 잘 이해하고 코드를 짰다면

위와 같이 삼각형이 잘 나오는 것을 확인할 수 있다.

 

역삼각형 찍는 법

tildacoderecorder.tistory.com/2

 

C언어 - While문 이용하여 *별로 삼각형 만들기 2

* ** *** **** ***** 저번 글에서는 위와 같은 모양의 삼각형 만들기를 설명했었다. tildacoderecorder.tistory.com/1?category=918749 C언어 - While문 이용하여 * 별로 삼각형 만들기 만들고자 하는 삼각형의 모..

tildacoderecorder.tistory.com

 

반대 방향으로 삼각형 찍는 법

tildacoderecorder.tistory.com/17

 

C - While문 이용하여 *별로 삼각형 만들기 3

이번에 임의의 숫자를 입력받아 그 수 만큼 While문을 이용하여 만들어 볼 삼각형의 모양은 이렇다. * ** *** **** ***** 사실 *별로 삼각형 찍기는 for문을 이용하는 것이 코드를 봤을 때도, 만들 때도

tildacoderecorder.tistory.com

 

반응형