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

2020. 10. 6. 21:38·C
728x90
반응형

 

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

숫자가 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

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'C' 카테고리의 다른 글

연결리스트(Linked list) 마지막에서 두번째 데이터 출력 - C 언어  (0) 2021.04.09
연결리스트(Linked list) 생성 / 출력 - C 언어  (0) 2021.04.09
포인터를 이용한 swap 함수 만들기 - C 언어  (0) 2021.03.03
C - While문 이용하여 *별로 삼각형 만들기 3  (0) 2020.10.08
While문 이용하여 *별로 삼각형 만들기 2 - C 언어  (0) 2020.10.06
'C' 카테고리의 다른 글
  • 연결리스트(Linked list) 생성 / 출력 - C 언어
  • 포인터를 이용한 swap 함수 만들기 - C 언어
  • C - While문 이용하여 *별로 삼각형 만들기 3
  • While문 이용하여 *별로 삼각형 만들기 2 - C 언어
waVwe
waVwe
    반응형
  • waVwe
    waVwe 개발 블로그
    waVwe
  • 전체
    오늘
    어제
    • ALL (184)
      • Python (1)
      • Spring (15)
      • DevOps (10)
      • Git (6)
      • JAVA (4)
      • C (22)
      • 코테 문제 풀이 (124)
        • 프로그래머스 (43)
        • 백준 (2)
        • 정올 (64)
        • SW Expert Academy (1)
        • 온코더 oncoder (14)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 🐙 Github
  • 공지사항

  • 인기 글

  • 태그

    자바
    코테
    깃헙
    springboot
    자료구조
    C
    Til
    C언어
    java
    CI/CD
    스프링부트
    형변환
    스파르타코딩
    docker
    MSA
    연결리스트
    while문
    스파르타코딩클럽
    깃
    도커
    알고리즘
    온코더
    정올
    이진트리
    progate
    아파치카프카
    내일배움캠프
    프로그래머스
    devops
    스프링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
waVwe
While문 이용하여 * 별로 삼각형 만들기 - C 언어
상단으로

티스토리툴바