while(조건식)
{ // 반복문의 시작
반복할 내용
} // 반복문의 종료
#include <stdio.h>
int main(void)
{
int i = 0;
while(1)
{
printf("반복 횟수: %d \n", i);
i++;
// 무한 루프 탈출하는 break 문
// if(i>10)
// break;
}
return 0;
}
cf. break 문은 무한 루프뿐만 아니라 일반적인 반복문을 탈출할 때도 switch 문에도 사용
#include <stdio.h>
int main(void)
{
int i = 2;
int j = 1;
int result = 0;
while(i<10)
{
while(j<10)
{
result = i * j;
printf("%d * %d = %d \n", i, j, result);
j++;
}
i++; // 단을 증가
j = 1; // 단을 시작
printf("--------\n");
}
return 0;
}
조건식이 '참'인 동안 '반복할 내용'을 반복해라
ex)
```c
for (초깃값; 조건값; 증감값)
{ // 반복문의 시작
반복할 내용
} // 반복문의 종료
ex)
#include <stdio.h>
int main(void)
{
int i;
for (i = 0; 1; i++) // 조건값 1이 참이기에 무한 반복, 1 생략 가능
{
printf("반복 횟수: %d \n", i);
}
return 0;
}
ex) 구구단
#include <stdio.h>
int main(void)
{
int i, j;
int result = 0;
for (i = 2; i < 10; i++)
{
for (j = 1; j < 10; j++)
{
result = i * j;
printf("%d * %d = %d \n", i, j, result);
}
printf("-------\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int i;
int factorial = 1;
for (; i < 10; i++) // 초깃값이 없는 경우
{
// 1*2*3*4*5*6*7*8*9의 결과 저장
factorial = factorial * i;
}
printf("1부터 10까지의 곱: %d \n", factorial);
return 0;
}
// 1부터 10까지의 곱(10!): 362880
#include <stdio.h>
int main()
{
int i;
int factorial = 1;
for (i = 1; ; i++) // for(i=1; 1; i++)과 같은 의미, 무한 루프
{
factorial = factorial * i;
if(i>10)
break;
}
printf("1부터 10까지의 곱: %d \n", factorial);
return 0;
}
// 1부터 10까지의 곱(10!): 362880
#include <stdio.h>
int main()
{
int i;
int factorial = 1;
for (i = 1; i <= 10; ) // for(i=1; 1; i++)과 같은 의미, 무한 루프
{
factorial = factorial * i;
i++;
}
printf("1부터 10까지의 곱: %d \n", factorial);
return 0;
}
// 1부터 10까지의 곱(10!): 362880
cf. for문 안의 초깃값, 조건값, 증감값 모두 비워두고 다른 위치에서 선언할 수는 있음. 그러나 가독성이 떨어지기에 사용할 이유가 없음
앞서 배운 while, for 문은 '~하는 동안 ~을 해라'라는 while(for) ~ do 문의 형식.
이번에 배울 반복문은 do~while 순서가 반대이다.
먼저 실행하고 조건이 만족하면 반복한다. 즉 최소한 한 번은 반복할 내용을 실행함.
do
{
반복할 내용
} while(조건식);
Reference
강의: 박정민, 『C 프로그래밍』, KOCW 한국산업기술대학교, 7강
교재: 박정민, 『열혈강의 C 언어 본색 명강의가 일으키는 C 언어 기적』, 프리렉 (2011), p170-.