만들고자 하는 삼각형의 모양은 임의의 숫자를 입력받아 그 숫자만큼의 크기의 삼각형을 만들어내는 것이다.
숫자가 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
반대 방향으로 삼각형 찍는 법
tildacoderecorder.tistory.com/17
'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 |