C++

반복문(while, do while)

yoooon1212 2024. 12. 5. 01:19

 

 

while 

 

while 반복문 형식

해당 조건까지 반복

while(조건){
	해당 조건을 만족할 때까지 반복
}

조건: B

 

A는 while문 밖에 적기

C는 while문 안에 적기

 

조건의 초기값
while(조건){
    해당 조건을 만족할 때까지 반복
    조건의 증가 또는 감소
}

반복 내용이 한 줄이라면 { } 생략 가능

 

 

코드 예시

#include <iostream> 
using namespace std;

int main() {
	cout << "프로그램 시작" << endl;
	int i = 0;
	while (i < 10) {
		cout << i << "안녕하세요" << endl;
		i++;
	}
	cout << "프로그램 종료" << endl;
	return 0;
}

 

출력 결과

 

 

 

실습 문제1

1부터 2023까지 홀수인 정수의 합은 얼마인지 while문을 사용하여 계산하세요.
#include <iostream> 
using namespace std;

int main() {
	int sum = 0;
	int i = 1;
	while (i <= 2023) {
		if (i % 2 == 1)
			sum += i;
		i++;
	}
	cout <<  sum << endl;
	return 0;
}
#include <iostream> 
using namespace std;

int main() {
	int sum = 0;
	int i = 1;
	while (i <= 2023) {
		sum += i;
		i += 2; // 3, 5, 7, 9... 
} 
	cout << sum << endl;
	return 0;

 

출력 결과

 

 

 

실습 문제 2

1부터 100까지의 수 중 5의 배수만 출력하세요.
#include <iostream> 
using namespace std;

int main() {
	int i = 1;
	while (i <= 100) {
		if (i % 5 == 0) {
			cout << i << endl;
		}
		i++;
	}
	return 0;
}
#include <iostream> 
using namespace std;

int main() {
	int i = 5;
	while (i <= 100) {
		cout << i << endl;
		i += 5;
	return 0;
}

 

출력 결과

 

 

 

실습 문제 3

정수를 입력 받아 그 수에 해당하는 구구단을 출력하는 프로그램을 만드세요.(구구단)
#include <iostream> 
using namespace std;

int main() {
	int n;
	int i = 1;

	cout << "구구단을 출력하겠습니다" << endl;
	cout << "몇 단을 출력할까요? ";
	cin >> n;
	while (i <= 9) {
		// n * i = 결과
		cout << n << "*" << i << "=" << n * i << endl;
		i++;
	}
	return 0;
}

 

 

출력 결과

 

 


do while

 

do while 반복문

적어도 한 번 이상은 반복

조건의 초기값
do {
    무조건 한 번은 수행
    해당 조건을 만족할 때까지 반복
} while(조건);
조건의 초기값
do 
    무조건 한 번은 수행
    조건의 증가 또는 감소
    해당 조건을 만족할 때까지 반복
while(조건);

반복 내용이 한 줄이라면 { } 생략 가능

 

 

예제 코드

#include <iostream> 
using namespace std;

int main() {
	cout << "프로그램 시작" << endl;
	int i = 0;
	do {
		cout << i << "안녕하세요" << endl;
		i++;
	} while (i < 10);
	cout << "프로그램 종료";
	return 0;
}

 

출력 결과

 

 

실습 문제 1

do while 문은 조건을 만족하지 않더라도 무조건 한 번은 실행됨

#include <iostream> 
using namespace std;

int main() {
	cout << "프로그램 시작" << endl;
	int i = 0;
	do {
		cout << i << "안녕하세요" << endl;
		i++;
	} while (i < 0);
	cout << "프로그램 종료";
	return 0;
}

while 문의 조건을 i < 0으로 하여 조건을 만족하지 않도록 함

 

출력 결과

do 내의 코드가 반드시 한 번 실행

조건문을 만족하지 않으므로 바로 종료됨

 

 

실습 문제 2

음식점 메뉴 주문 프로그램을 만드세요
만약 메뉴판에 없는 번호를 선택했다면 메뉴판에 있는 음식을 선택할 때까지 메뉴판을 다시 출력하세요
#include <iostream> 
using namespace std;

int main() {
	int n;

	do {
		cout << "어서오세요. 맛있는 음식점입니다" << endl;
		cout << "****메뉴****" << endl;
		cout << "1.떡볶이" << endl;
		cout << "2. 피자" << endl;
		cout << "3. 치킨" << endl;
		cout << "4. 파스타" << endl;
		cout << "****************" << endl;
		cout << "먹고 싶은 음식의 번호를 선택해주세요" << endl;
		cin >> n;
	} while (n < 1 || n > 4);

	if (n == 1) 
		cout << "떡볶이를 주문하셨습니다" << endl;
	else if (n == 2)
		cout << "피자를 주문하셨습니다" << endl;
	else if (n == 3)
		cout << "치킨을 주문하셨습니다" << endl;
	else 
		cout << "파스타를 주문하셨습니다" << endl;
	return 0;
}

 

출력 결과

1, 2, 3, 4가 아닌 다른 번호 입력 시

do 내의 코드가 다시 실행된다

 


break와 continue

 

 

 

break

반복을 중단함

break를 만나는 순간 반복문을 빠져 나오게 

 

코드 예시

#include <iostream> 
using namespace std;

int main() {
	int i = 0;
	while (i < 10) {
		if (i == 5)
			break;
		cout << i << "안녕하세요" << endl;
		i++;
	}
	return 0;
}

 

출력 결과

 

 

 

continue

현재 반복하던 내용을 중단하고 다음 반복으로 넘어감

 

코드 예시

#include <iostream> 
using namespace std;

int main() {
	for (int i = 0; i < 10; i++) {
		cout << i << "반복" << endl;
		if (i == 5)
			continue;
		cout << "안녕하세요" << endl;
	}
	return 0;
}

 

출력 결과

지금 하던 반복(5)를 실행 안 하고(띄어넘고) 넘어감

 

 

 

실습 문제 1

for 반복문을 사용하여 i가 6이상이면 멈추고, i가 짝수일 때만 i의 값을 출력하는 프로그램을 만드세요
#include <iostream> 
using namespace std;

int main() {
	for (int i = 0; i < 10; i++) {
		if (i >= 6)
			break;
		if (i % 2 == 0)
			cout << i << endl;
		// else 는 생략 가능
		else
			continue; // 넘어감
	}
	return 0;
}

 

출력 결과

 

 

실습 문제 2

정수를 입력받아 그 수에 해당하는 구구단만 제외하고 출력하는 프로그램을 만드세요
#include <iostream> 
using namespace std;

int main() {
	int n;

	cout << "구구단 출력 프로그램" << endl;
	cout << "몇 단을 제외하고 출력할까요? " << endl;
	cin >> n;

	// 2단 ~ 9단까지
	for (int i = 2; i < 10; i++) {
		if (i == n)
			continue;
		// 1 ~ 9까지 곱하기
		for (int j = 1; j <= 9; j++) 
			cout << i << "*" << j << "=" << i * j << endl;
	}
	return 0;
}

 

출력 결과

3단 제외하고 출력됨

 

 

실습 문제 3

숫자를 입력 받아 5부터 입력 받은 숫자까지 합을 구하는 프로그램을 만드세요
이때, 5보다 작은 숫자가 입력되었다면 '계산할 수 없음'을 출력하고 프로그램을 종료하세요
#include <iostream> 
using namespace std;

int main() {
	int n;
	int i = 5;
	int sum = 0;

	cout << "숫자를 입력하세요: ";
	cin >> n;

	if (n >= 5){
	while (i <= n) {
		sum += i;
		i++;
	}
	cout << "결과는 " << sum;
	}
	else {
		cout << "계산할 수 없음";
	}
	return 0;
}

 

 

출력 결과

 

 

 

실습 문제 4

0이 입력될 때까지 계속 정수를 입력받고 입력된 모든 숫자들의 총합을 출력하세요
#include <iostream> 
using namespace std;

int main() {
	int n;
	int sum = 0;

	do {
		cout << "숫자를 입력하세요: ";
		cin >> n;

		if (n == 0)
			break;

		sum += n;

	} while (1);
	cout << "결과는" << sum;
	return 0;
}

 

출력 결과