본문 바로가기

C언어_VisualStudio

반복문 정리: while문

오늘은 C에서 사용하는 반복문에 대해 정리를 해볼 것이다. :-)

 

while문

 

반복문이란?

특정 명령문을 반복적으로 수행하기 위해 필요하다.

반복문을 표한하기 위해 C에서는 while, do-wile, for문을 제공한다.

반복문의 문법은 어렵지 않으나, 실제 활용하는 연습이 필요하다.

 


 

< while문 >

조건이 참이면 계속 반복한다.

조건이 거짓인 순간 반복을 종료한다.

실행 순서는 다음과 같다.

    조건 체크 -> 참이면 명령문 실행 -> 조건 체크 -> 참이면 명령문 실행... -> 조건 체크 -> 거짓이면 명령문 종료

조건 체크 단계에서 조건이 거짓이면 반복을 중단한다.

while문은 조건 체크를 먼저 하기 때문에 반복하고 싶은 명령문이 한 번도 실행되지 않을 수 있다. 이 점을 주의하자.

 

< while문 문법 >

문법은 다음과 같다. 

while (조건){

    명령문;

}

 

< while문 간단 예제 >

Hi~?를 10번 출력해보자.

// Hi~?를 10번 출력
#include <stdio.h>
int main(void) {
	int count = 0;	// 10번의 숫자를 세줄 count를 선언하고 0으로 초기화 한다.
	while (count < 10) {	// 조건은 count가 10보다 작을 때까지 이다. 
		printf("Hi~?\n");	// 반복할 문장: Hi~?
		count++;	// 반복할 문장을 완료하고 그 다음 반복이 실행되기 전에 count의 값에 1 더해준다.
	}
	return 0;
}

반복문이 실핼될 때마다 count값은 1씩 증가하기 때문에 11번째 실행이 될 때 count의 값은 10이 되어 while문의 조건을 만족하지 못해 while문이 종료된다. 즉, 10번만 반복하고 프로그램은 종료된다.

 

그렇다면 반복횟수까지 사용자가 정하도록 할 수 있을까?? 물론 가능하다.

그럼, 이제 위 코드를 사용자에게 몇 번 출력을 원하는지 물어보고 Hi~?를 그 횟수만큼 출력하도록 수정해보자. 전혀 어렵지 않다. while문 전에 몇 번을 원하는지를 입력받아 변수에 저장하고 그 변수를 10 대신에 써주면 된다.

코드는 다음과 같다.

// Hi~?를 사용자가 원하는만큼 출력
#include <stdio.h>
int main(void) {
	int count = 0, n;	// 반복 횟수를 세줄 count를 선언하고 0으로 초기화 한다. 사용자에게 받을 숫자를 저장할 변수를 선언한다. 
	printf("repetition number? ");
	scanf("%d", &n);
	while (count < n) {	// 조건은 count가 사용자에게 받은 n보다 작을 때까지 이다. 
		printf("Hi~?\n");	// 반복할 문장: Hi~?
		count++;	// 반복할 문장을 완료하고 그 다음 반복이 실행되기 전에 count의 값에 1 더해준다.
	}
	return 0;
}

 

< 또 다른 예제 >

이번에는 1부터 사용자가 원하는 숫자까지 합을 계산하는 프로그램을 만들어보자. 예를 들어 1부터 10까지 합은 55이다.

일단은 반복횟수를 세줄 count가 필요하고, 합을 저장할 변수도 필요하다. 그리고 결괏값을 출력하기 전에 while문을 이용하여 합을 계산해보자.

코드는 다음과 같다.

// 1부터 사용자가 원하는 숫자까지 합
#include <stdio.h>
int main(void) {
	int count = 1, n;	// 반복횟수, 사용자에게 받을 값을 저장할 변수 선언
	int sum = 0;	// 합은 계속 더해주기 때문에 0으로 초기화
	printf("number? ");
	scanf("%d", &n);
	while (count <= n) {
		sum += count;	// 다음과 같은 식; sum = sum + count
		count++;
	}
	printf("sum = %d\n", sum);
	return 0;
}

 

< 또다른 예제 >

이번에는 저번에 정리한 문법을 사용해 볼 겸, 사용자에게 양의 정수를 입력받고 입력받은 정수보다 작은 범위의 정수들 중에서 2의 배수만 출력해보자. 예를 들어 사용자가 입력한 양의 정수가 10이라면 이것보다 작은 자연수 1 ~ 9 중에서 2의 배수인 2 4 6 8 만 출력된다. 

2의 배수일 때 출력되는 것이므로 조건문을 사용해야 한다. 조건문은 다음 글에 정리해놓았다.

https://cwithvisual.tistory.com/entry/%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EC%A0%95%EB%A6%AC-if-if-else-else-if-else

 

조건문 정리 : if / if ~ else / else if / else

오늘은 조건문을 정리해보자. :-) 조건문 프로그램이 단조롭게 순차적으로 실행되는 것은 아니다. 조건에 따라 실행 순서를 바꿔줄 수 있는데 이때 사용하는 게 조건문이다. 조건문에는 if문과 sw

cwithvisual.tistory.com

if문과 같이 써보는 것일 뿐 나머지는 쉽다.

// 사용자에게 양의 정수를 입력받고 그 값 보다 작은 범위의 값들 중에서 2의 배수만 출력
#include <stdio.h>
int main(void) {
	int count = 1, n;	// 반복횟수, 사용자에게 받을 값을 저장할 변수 선언
	printf("number? ");
	scanf("%d", &n);
	while (count < n) {	// 반복은 사용자에게 받은 값 미만으로 반복
		if (count % 2 == 0) printf("%d ", count);	// 2의 배수(2로 나누었을 때 나머지가 0)일 때 출력
		count++;	// 조건을 만족하는지와 상관없이 1씩 증가해야 한다.
	}
	return 0;
}

이때, count++을 if문 바깥에 써주는 이유는 간단하다. 이렇게 해주어야 count가 1일 때 (반복 실행) 조건 확인하고 반복문이 실행되고 그 안에서 조건(2의 배수) 확인하고 출력하고 1 증가시켜주면 count가 2가 되어 조건(반복 실행 조건) 확인하고 반복문이 실행되고 그 안에서 조건(2의 배수) 확인하고 출력하는 과정이 진행되기 때문이다. 

 

오늘은 이 정도에서 반복문 중 while문의 정리를 마치겠다. :-)