이번에 임의의 숫자를 입력받아 그 수 만큼 While문을 이용하여 만들어 볼 삼각형의 모양은 이렇다.
*
**
***
****
*****
|
cs |
사실 *별로 삼각형 찍기는 for문을 이용하는 것이 코드를 봤을 때도, 만들 때도 이해하기가 쉽다.
하지만 for문으로 만들 수 있는 것은 While문으로도 만들 수 있다.
먼저 완성된 코드는 아래와 같다.
#include<stdio.h>
int main()
{
int i,j,k,num;
scanf("%d",&num);
while(i<=num){
j=1;
while(j<=num-i){
printf(" ");
j++;
}
k=1;
while(k<=i){
printf("*");
k++;
}
printf("\n");
i++;
}
return 0;
}
|
cs |
이번 삼각형은 저번 글에서 만든 삼각형과는 다르게 오른쪽에서 왼쪽으로 늘어나는 삼각형이다.
이 삼각형을 만들기 위해서 생각해봐야 하는 것은 '공백'이다.
임의로 주어진 숫자가 5라고 가정했을 때, 우리는 총 5행 5열의 공간을 만들어야 한다.
첫째줄은 4개의 공백 " "과 1개의 별로 이루어져 있고
두번째줄은 3개의 공백 " "과 2개의 별로 이루어져 있다.
위의 특징을 감안해 코드를 짜보자.
int i,j,k,num;
scanf("%d",&num);
|
cs |
줄, 별, 공백의 갯수의 변수인 ,i , j, k를 선언하고 입력받을 숫자의 변수인 num도 선언한다.
그리고 scanf를 통해 숫자를 입력받는다.
첫번째 while은 입력받은 숫자만큼의 열을 만들어야 한다.
while(i<=num)
|
cs |
두번째 while은 공백의 갯수를 셀 것이다.
j=1;
while(j<=num-i){
printf(" ");
j++;
}
|
cs |
공백은 무조건 줄의 첫번째부터 시작하니 j=1;을 입력하고
공백의 갯수는 입력받은 수에서 줄을 뺀 숫자와 같다.
예시로 5을 입력 받았다면
첫번째 줄(i)의 공백의 갯수(j)는 4(num-i)이게 되는 것이다.
공백을 출력하고 j++;
k=1;
while(k<=i){
printf("*");
k++;
}
|
cs |
세번째 while로는 별을 찍을 것이다.
첫째줄부터 무조건 별이 한개가 찍히며 시작하므로 k=1;
별의 갯수는 줄과 같다. 첫째줄에 한 개, 둘째줄에 두개이므로
조건식을 k<=i로 한 후 별을 출력하고 k++;
printf("\n");
i++;
|
cs |
두번째와 세번째 while을 다 만들고 난 뒤에는 첫번째 while을 마무리할 시간이다.
공백과 별을 다 찍고난 뒤에는 "\n" 개행문자를 출력하고 i++;로 줄의 수를 증가시킨다.
잘 이해하고 코드를 완성했다면 다음과 같은 결과가 나온다.
더 자세한 설명은 삼각형 만들기 1 참조.
tildacoderecorder.tistory.com/1?category=918749
'C' 카테고리의 다른 글
연결리스트(Linked list) 마지막에서 두번째 데이터 출력 - C 언어 (0) | 2021.04.09 |
---|---|
연결리스트(Linked list) 생성 / 출력 - C 언어 (0) | 2021.04.09 |
포인터를 이용한 swap 함수 만들기 - C 언어 (0) | 2021.03.03 |
While문 이용하여 *별로 삼각형 만들기 2 - C 언어 (0) | 2020.10.06 |
While문 이용하여 * 별로 삼각형 만들기 - C 언어 (0) | 2020.10.06 |