- [C언어] for문 예제 별찍기/별탑 쌓기2023년 08월 04일
- 주사위 clice
- 작성자
- 2023.08.04.:16
반응형🎲 1. 문제
N을 입력 받고 이렇게 출력되도록 하여라
🎲 2. 알고리즘 짜기
예제를 보고 규칙을 찾아야 한다.
N=10일때
1. 총 줄의 수는 10개이다.
2. 맨 아래 줄은 1개, 그 위는 3개... 21개 이런 식으로 2개씩 증가한다
3. 맨 첫번째 줄은 Nx2-1개 이다
4. 공백은 첫번째 줄 0개, 두번째 줄 1개, 세번째 줄 2개... 이런식으로 증가한다.
for 문을 중첩하여 사용하면 된다.
🎲 3. 코드
코드를 찬찬히 작성해보자.
1). 사용자에게 총 줄의 수를 입력받는다. &를 이용하여 lines에 저장한다.
printf("N="); scanf("%d", &lines);
2) 첫번째 줄의 별* 개수는 nx2-1개이다. 이를 변수 n으로 저장한다.
int n = (lines * 2 - 1);
n이 해당 줄의 별의 개수가 될 것이다.
3) 가장 바깥쪽 for문
for (i = n; i > 0; i -= 2)
i=n에 대입한다. 별찍는 개수이다(i=n)
별의 개수는 홀수 개이기 때문에 줄이 바뀔때마다 별의 개수가 2개씩 줄어든다(i-=2)
마지막 별의 개수는 1개이며, 음수가 되면 별을 찍지 않고 코드가 종료된다.( i>0)
for (j = 1; j <= i; j++) { printf("*"); }
한줄에 별을 출력하는 코드이다. j=i가 될때까지, 즉 한 줄에 i개만큼 별을 출력한다.
for (i = n; i > 0; i -= 2) { for (j = 1; j <= i; j++) { printf("*"); } printf("\n");
for (k = n; k >=i; k -= 2) { printf(" "); }
해당 규칙을 토대로 짠 코드를 모아보면
완성된 코드는 다음과 같다.
🎲 4. 완성된 코드
#include <stdio.h> int main(void) { int i, j, k, lines; printf("N="); scanf("%d", &lines); int n = (lines * 2 - 1); for (i = n; i > 0; i -= 2) { for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); for (k = n; k >=i; k -= 2) { printf(" "); } } return 0; }
#include <stdio.h>
int main(void) {
int i, j, k, lines;
printf("N=");
scanf("%d", &lines);
int n = (lines * 2 - 1);
for (i = n; i > 0; i -= 2) {
for (j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
for (k = n; k >=i; k -= 2) {
printf(" ");
}
}
return 0;
}
반응형'프로그래밍 언어 > c언어' 카테고리의 다른 글
[쉽게풀어쓴C언어] 포인터 총 정리 5: 포인터와 배열 (0) 2024.02.03 [쉽게풀어쓴C언어] 포인터 총 정리 4: 포인터와 함수(call by value, call by reference) (1) 2024.02.03 [쉽게풀어쓴C언어] 포인터 총 정리 3: 포인터 연산과 주의할 점 (0) 2024.02.03 [쉽게풀어쓴C언어] 포인터 총 정리 2: 간접참조 연산자 * (0) 2024.02.03 [쉽게풀어쓴C언어] 포인터 총 정리 1: 포인터란? (0) 2024.02.03 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)