코린이
Day10 본문
반복문
반복문은 조건식을 비교하면서 참일 경우 종속 문장을 실행시키고 변화식을 거쳐 조건식을 또 다시 비교하는 문법으로 for(), while(), do ~ while() 3가지 존재한다. 오늘은 for() 문에 대해 공부하였다.
for문의 기본 원형:
for(초기식; 조건식; 변화식)
{
종속 문장;
}
for 문의 원형으로 초기식이 먼저 실행하고 그 뒤에 조건식에 맞으면 true 면 종속 문장을 실행시키고 false 이면 for 문을 종료한다. 마지막 변화식은 실행을 시킨 후에 다시 조건식을 반복한다.
for 문 실행 순서
초기식 -> 조건식 -> 종속 문장 -> 변화식 -> 조건식 -> 종속 문장 -> 변환식 -> ... 순으로 진행된다.
#include<stdio.h>
int main(){
for (int i = 0; i < 10; i++) {
printf("Hello World!\n");
}
return 0;
}
위에 코드는 i가 0부터 10까지 반복이며 한 번씩 반복할 때마다 "Hello World!"를 출력한다.
for 문에서 무한 루프를 사용하고 싶을 때는 초기식, 조건식, 변화식을 생략하면 된다.
ex) for(;;)
#include<stdio.h>
int main(){
for (;;)
printf("Hello World!\n");
return 0;
}
기타 키워드로
break와 continue 문이 있다.
break: 해당 키워드를 만나게 되면 반복문 탈출
continue: 해당 키워드를 만나게 되면 continue보다 아래 있는 종속 문장은 실행하지 않고 진행된다.
오늘 배운 내용을 응용하여 예제를 만들어 보았다.
Q1) for 문을 이용하여 별도의 입력 없이 알파벳 출력
#include<stdio.h>
int main(){
for (int i = 'A'; i <= 'Z'; i++)
printf(" %c,", i);
return 0;
}
Q2) 소문자 알파벳 하나를 입력 받고 a부터 입력한 알파벳까지 출력(for 문 사용)
Q3) 숫자 한 개를 입력 받고 출력을 반복하다가 숫자 9가 됐을 때는 종료되는 프로그램을 작성
#include<stdio.h>
int main(){
int sum;
for (;;) {
printf("\n입력: ");
scanf("%d", &sum);
if (sum == 9) {
printf("9가 입력되어 프로그램이 종료되었습니다.");
break;
}
printf("출력: %d\n", sum);
}
return 0;
}
Q4) 삼중 반복문을 사용하여 9층 피라미드 만들기
#include<stdio.h>
int main(){
for (int a = 1; a <= 9; a++) {
for (int b = 1; b <= 9 - a; b++) {
printf(" ");
}
for (int c = 0; c < a*2-1; c++) {
printf("*");
}
printf("\n");
}
}
(힘들어... 그만)
#include<stdio.h>
int main(){
for (int i = 0; i <= 8; i++) {
for (int j = 0; j <= 8; j++) {
if (i == j) {
printf("*");
} else if (i == 8) {
printf("*");
} else if (i == 0) {
printf("*");
} else if (i + j == 8) {
printf("*");
} else if (i , j >= 8) {
printf("*");
} else if (i, j <= 0) {
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
}
이중 반복 문과 if 문을 사용하여 모양을 만들어봤는데 생각보다 너무 어렵고 머리를 많이 썼다...
#include<stdio.h>
int main(){
for (int i = 0; i <= 18; i++) {
for (int j = 0; j <= 18; j++) {
if (i == j)
printf("*");
else if (i + j == 18)
printf("*");
else if (i, j <= 0)
printf("*");
else if (i == 0)
printf("*");
else if (i, j >= 18)
printf("*");
else if (i == 18)
printf("*");
else if (i == 18)
printf("*");
else if (i == 9)
printf("*");
else if (j == 9)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
(위에 코드 만든다고 30분 이상으로 결렸다... 막판에 운 좋게 성공했다ㅋㅋㅋㅋㅋ)
(for 문 초반에는 만만하게 봤는데 문양 만드는 거 보고 한 번의 위기가 왔다...)