[나도코딩] 피라미드를 쌓아라
🦿 개요
- C언어의 반복문
- For
- While
- Do While
🦿 ++
- 하나의 프로젝트에 main이 여러 개 있으면 빌드 오류가 난다
- 이전에 사용하던 파일의 main 함수 이름을 변경해주자
int a = 10;
printf("a는 %d\n", a);
a++;
printf("a는 %d\n", a);
a는 10
a는 11
++
- 연산자
- 1씩 증가
int b = 20;
printf("b는%d\n", ++b);
printf("b는%d\n", b++);
printf("b는%d\n", b);
b는 21
b는 21
b는 22
- b 앞에 있을 때는
++
을 먼저 하고 문장을 끝내라는 뜻++b
=b = b + 1
- b 뒤에 있을 때는 문장을 다 끝내고 나서
++
수행하라는 뜻- 그 다음 줄로 넘어갈 때, 1이 증가한다
- 따라서, 아래의 b가 21이 아닌 22가 된다
int i = 1;
printf("Hello World %d\n", i++);
printf("Hello World %d\n", i++);
printf("Hello World %d\n", i++);
Hello World 1
Hello World 2
Hello World 3
++
이 뒤에 있으므로 i 값을 먼저 출력하고 나서 i의 값을 1 늘려준다
🦿 for
for (int i = 1; i <= 10; i++)
{
printf("Hello World %d\n", i);
}
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
Hello World 10
for (선언; 조건; 증감) {}
- i는 1이고, i가 10보다 작거나 같으면 반복해서 수행하고(출력하고) i를 1씩 늘려준다
- 출력이 끝난 후, i는 1이 늘어나 2가 되고 2가 조건으로 들어간다
- i가 10이 되서도 조건에 따라 출력을 하게 되고 그 다음 11이 되고 나서야 조건에서 걸러져 반복이 중단된다
🦿 while
int i = 1;
while (i <= 10)
{
printf("Hello World %d\n", i++);
//i++
}
while (조건) {}int i = 1;
- while을 쓸 때는 변수 i 선언을 while문 밖에서 한다
- 연산자는 while문 내에 작성한다
- i가 10일 때까지는 조건을 통과하다가 연산자를 만나서 11이 되면 종료된다
🦿 Do while
int i = 1;
do {
printf("Hello World %d\n", i++);
//i++
} while (i<=10);
do {} while (조건);
- 자리만 조금 바뀌었을 뿐, while과 거의 유사하다
🦿 2중 반복문
for (int i = 1; i <= 3; i++)
{
printf("첫번째 반복문: %d\n", i);
for (int j = 1; j <= 5; j++)
{
printf(" 두번째 반복문: %d\n", j);
}
}
첫번째 반복문: 1
두번째 반복문: 1
두번째 반복문: 2
두번째 반복문: 3
두번째 반복문: 4
두번째 반복문: 5
첫번째 반복문: 2
두번째 반복문: 1
두번째 반복문: 2
두번째 반복문: 3
두번째 반복문: 4
두번째 반복문: 5
첫번째 반복문: 3
두번째 반복문: 1
두번째 반복문: 2
두번째 반복문: 3
두번째 반복문: 4
두번째 반복문: 5
- for문 안의 for문
- 순서
- int i는 1부터 3까지 동작 수행
- printf문 출력
- for문 안 for문 진입
- int j는 1부터 5까지 동작 수행
- printf문 다섯 개 출력
- 다음 i의 수 1 증가하고 i가 3이 될 때까지 위 과정 반복
// 구구단 프로그램
for (int i = 1; i <= 9; i++)
{
printf("%ㅇ단 계산\n", i);
for (int j = 1; j <= 9; j++)
{
printf("%d X %d = %d\n", i, j, i * j);
}
}
🦿 2중 반복문 파헤치기
❗ 별 피라미드
// 별 피라미드
for (int i = 0; i < 5; i++)
{
for (int j = 0; j <= i; j++)
{
printf("*");
}
printf("\n");
}
*
**
***
****
*****
j <= i
- i가 늘어나는 만큼만 별의 개수 늘리기
- i가 1이면 하나만, 2이면 둘만, ...
- 변수를 따로 지정할 필요없이
"*"
와 같이 쓸 수 있다 - 첫번째 for문에서 개행을 해줘야 별표가 층별로 잘 나온다
- 두번째 for문 안에서 하면 출력할 때마다 개행이 되기 때문이다
❗ 표로 확인하기
❗ 거꾸로 별 피라미드
// 거꾸로 별 피라미드
for (int i = 0; i < 5; i++)
{
for (int j = i; j < 5 - 1; j++)
{
printf(" ");
}
for (int k = 0; k <= i; k++)
{
printf("*");
}
printf("\n")
}
*
**
***
****
*****
- 공백을 알파벳으로 대체하여 생각해보자
- 별이 하나일 때, 알파벳 네 개가 앞에 와야 한다
- 따라서, 기존 코드에서 알파벳에 대한 반복문이 필요하다
- 수가 점점 줄어드므로 시작 값을 i로 둔다
- 맨 처음 필요한 알파벳 개수는 4개이므로 끝 값은 4보다 작아야 한다
🦿 피라미드를 쌓아라
int floor;
printf("몇 층으로 쌓겠느냐? ")
scanf_s("%d", &floor);
for (int i = 0; i < floor; i++)
{
for (int j = i; j < floor - 1; j++)
{
printf(" ");
}
for (int k = 0; k < i * 2 + 1; k++)
{
printf("*");
}
printf("\n");
}
몇 층으로 쌓겠느냐? 5
*
***
*****
*******
*********
- 피라미드 모양으로 쌓으려면 별(
*
)이 1-3-5-7 등으로 늘어나야 한다 - 위로 올라갈수록 생기는 공백을 알파벳으로 대체하여 생각해보자
- 코드는 위와 동일
- 별이 1부터 2씩 늘어나므로
i*2+1
을 종료 조건으로 적어준다
* 출처: 나도코딩 "C 언어 무료 강의 (입문부터 게임 개발까지)"
Author And Source
이 문제에 관하여([나도코딩] 피라미드를 쌓아라), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tataki26/게임-피라미드를-쌓아라저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)