주어진 조건이 만족되는 동안 문장들을 반복 실행하는 문장구조를 while이라고한다.
while문 순서도
위와 같은 구조를 가지며, while문의 형식은
1 2 3 4 | while (i<10) // 조건식 { printf("Hello World!\n") } | cs |
조건식의 값이 참인 동안에는 주어진 문장을 반복 실행한다.
조건식의 값이 거짓이 되면 반복을 중단하며, 조건식은 참, 거짓으로 계산 될 수 있는 수식으로 값이 0이면 거짓으로 간주되고,
그렇지 않으면 참으로 간주된다.
5-1 에서 언급하였던 Hello World!를 5번 출력하는 프로그램을 while문으로 작성하는 예시는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main() { int i = 0; while (i<5) { printf("Hello World!\n"); i++; } return 0; } | cs |
위의 코드에서 반복 조건에 해당하는 것은 수식 i<5이며, 반복되는 내용은 중괄호 안에 있어야한다.
위으 코드는 변수 i가 0으로 초기화된 후에 한번 반복을 할때마다 i++를 이용하여 i값을 1씩 증가시킨다. 결국은 5보다 작지 않게 될것이고 그러면 반복이 종료된다.
//while문을 이용한 구구단 출력 프로그램
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> int main() { int i = 1; // 루프 제어 변수 int n; printf("출력하고 싶은 단 : "); // 구구단 단수를 입력받아 n에 저장. scanf("%d", &n); while (i <= 9) // 9보다 작거나 같을때 까지 반복한다. { printf("%d*%d = %d\n",n,i,n*i); i++; } return 0; } | cs |
출력 결과
위 예제는 반복횟수가 고정되어있었지만 사용자로부터 값을 받아서 이것을 반복의 횟수로 하면 훨씬 더 융통성 있는 프로그램을 만들 수 있다.
// 사용자로부터 정수 n을 입력받아서 1부터 n까지의 합을 구하는 문제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <stdio.h> int main() { int i, n, sum; printf("정수를 입력하세요 : "); scanf("%d", &n); i = 1; sum = 0; while (i<=n) { sum += i; i++; } printf("1부터 %d까지의 합은 %d입니다.", n, sum); return 0; } | cs |
출력결과
scanf가 while루프 안으로 들어갈수도있다.
//사용자가 입력하는 5개의 값을 합하여 결과를 출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> int main() { int i, n, sum; i = 0; sum = 0; while (i<5) { printf("값을 입력하세요 : "); scanf("%d", &n); sum = sum + n; i++; } printf("합은 %d입니다.", sum); return 0; } | cs |
출력결과
while문 작성시 주의할 점
1 2 3 4 5 6 | int i = 0; while (i < 3) printf("반복중"); i++ | cs |
위 while문은 3번 반복할것같지만 무한히 반복하게 된다.
왜냐하면 i++문장은 while루프안에 있지 않기 때문이다. 위에서 말했지만 while문 안에있는 문장들은 모두 중괄호{}로 묶어 줘야한다. 단순히 들여쓰기를 한다고 while루프안의 문장이 되지 않는것이다.
1 2 3 4 5 6 | int i = 0; while (i < 3) { printf("반복중"); i++ } | cs |
이런식으로 써줘야 3번 반복하고 종료하게된다.
1 2 | while (i < 3); i++; | cs |
while문 조건식에 ;을 넣는경우 무한이 반복하게 된다.
;을 하나의 문장으로 인식하기때문에 프로그램은 무한히 반복되게된다.
'C 프로그래밍 > 5. 반복문' 카테고리의 다른 글
5-5-2 for 문 2 (0) | 2019.05.21 |
---|---|
5-5-1 for 문 1 (0) | 2019.05.21 |
5-4 do_while문 (0) | 2019.05.21 |
5-3 반복 루프에서 보초값 사용하기 (0) | 2019.05.21 |
5-1 반복의 개념 (0) | 2019.05.18 |