C언어 별찍기
- 프로그래밍/C/C++
- 2018. 6. 29.
C언어 별찍기
문제 : N줄인 삼각형을 표시한다. 단, 사용자로 부터 임의의 N을 입력받는다
input : 3
output :
*
***
*****
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main() { int i, j, k, n; printf("몇줄을 만들거야? : "); scanf_s("%d", &n); for(i=0; i < n; i++) { for(j = n-1; j > i; j--) printf(" "); for(k = 0; k < 2 * j + 1; k++) printf("*"); pirntf("\n"); } return 0; } | cs |
설명 : 3을 입력받았다고 가정하에, for문안에 for문을 두개 넣는데 처음 for문은 줄 갯수로 생각을 하면 된다.
두번째 for문은 몇칸을 띄어쓰기 할 것인지 생각을 하면 된다. j=n-1로 초기화 해줬다. 반복문을 돌리면 2칸을 띄어쓰기 해줘야 되니 n-1을 했다.
그리고 조건값은 j>i로 해줬다. 현재 j=2다. 증감값도 1씩 줄어들고 있다.
띄어쓰기를 2칸 해줘야 하니, j를 i (i=0)까지 돌려야 된다. 그럼 for문은 두번 돌아간다.
세번째 for문은 *을 출력해주는거다. 2*j+i를 해준 이유는 첫번째 루틴 for문이 돌아갈때 j값은 0이다.
(위의 for문에서 j가 -를 해주니 0이 되었다.) 그럼 2*0+1=1이 된다 *는 한번만 출력이 된다.
두번째 루틴이 왔을때 j는 1이 된다. (위의 for문에서 조건값이 j>i이니 2>1이 된다. 그럼 for문은 한번만 돌으니 j값은 1이 된다.)
그럼 2*1+1=3이 된다. 그럼 *는 3번만 출력이 된다. 이해가 됬을것이다.
마지막은 줄바꿈을 해준다.
문제 : 위와 동일한 형태를 취하되, 역 삼각형을 출력한다. 아래는 N=3일때 출력 예시 이다.
input : 3
output :
*****
***
*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include<stdio.h> int main() { int i, j, k, n; printf("몇줄 출력할거야? : "); scanf_s("%d", &n); for(i = 0; i < n; i++) { for(j = 0; j < i; i++) printf(" "); for(k = n * 2 - 1; k > 2 * j; k++) printf("*"); printf("\n"); } return 0; } | cs |
코드를 분석해보면 안다. 위의 내용과 거의 똑같다.
문제 : 자연수 N을 입력받아 출력처럼 원하는 줄수 만큼 출력하시오.
input : 3
output :
*
**
***
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main() { int a; scanf_s("%d", &a); for (int i = 0; i < a; i++) { for (int j = 0; j <= i; j++) printf("*"); printf("\n"); } return 0; } | cs |
설명 : 첫번째 반복문에서 3줄을 만들어야 하니 조건값을 a로 해줬다. (3줄을 출력)
코드를 분석해보면 알것이다. 한번 그림을 그려서라든지 머리로 해보던지
나의 블로그 제목과 같이 코드를 분석하자.
문제 : 자연수 N을 입력받아 출력처럼 원하는 줄수 만큼 출력하시오.
input : 3
output :
***
**
*
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main() { int a; scanf_s("%d", &a); for (int i = 0; i < a; i++) { for (int j = a; j > i; j--) printf("*"); printf("\n"); } return 0; } | cs |
설명 : 코드를 분석해라!