본문 바로가기
School Study/2021-2

[week 06] C++ 복습_5장 반복문 (1)

by 전전긍긍 2021. 11. 26.

20211007_C++_공부기록

 

반복문에는 while, do-while, for문이 있다.

반복문 (1)에서는 while문과 do-while문을 다룬다.


1.1 while 문

while문은 조건이 참인 동안 반복적으로 문장을 실행한다.

1.2 while 문에서의 오류

  • 반복조건이 최종적으로 거짓이 되지 않으면 무한루프가 발생한다.
  • 실수로 반복을 한 번 더 또는 한 번 덜 실행하게 되는 경우를 하나차이로 인한 오류라고 한다.

*하나차이로 인한 오류 예시

의도 : 0부터 100까지

오류 : 1부터가 아닌 0부터 시작하기 때문에 while ( count < 100 )으로 써줘야 한다.

int count = 0;
while (count <= 100)
{
	cout << "Welcome to C++!" << endl;
    count++;
}

 

2 do - while 문

do-while은 (1)우선 반복문이 실행되고 나서 (2)반복 조건을 검사

위 조건을 제외하고는 while문과 동일

 


실습&예제

 

1. while문 예제: 덧셈 퀴즈

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
	srand(time(0));
	int number1 = rand() % 101; //0부터 100까지
	int number2 = rand() % 101;

	cout << number1 << " + " << number2 << " ? ";
	int answer;
	cin >> answer;

	while (number1 + number2 != answer) //덧셈 퀴즈
	{
		cout << "틀렸습니다. 다시 계산해보세요." << endl;
		cout << endl << number1 << " + " << number2 << " ? ";
		cin >> answer;
	}
	cout << "정답입니다!" << endl;
	return 0;
}
/*
39 + 0 ? 56
틀렸습니다. 다시 계산해보세요.

39 + 0 ? 15
틀렸습니다. 다시 계산해보세요.

39 + 0 ? 54
틀렸습니다. 다시 계산해보세요.

39 + 0 ? 29
틀렸습니다. 다시 계산해보세요.

39 + 0 ? 39
정답입니다!
*/

 

2. while문 예제: 미래의 등록금 예측

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	double tuition = 10000;
	int year = 0;

	while (tuition < 20000)
	{
		tuition = tuition + (tuition * 0.07);
		year++;
	}
	cout << year << " 년 후에는 등록금이 두 배가 되며," << endl;
	cout << fixed << setprecision(2);
	cout << year << " 년 후의 등록금은 " << tuition << " 입니다." << endl;
	return 0;
}
/*
11 년 후에는 등록금이 두 배가 되며,
11 년 후의 등록금은 21048.52 입니다.
*/

 

3. do-while문

#include <iostream>
using namespace std;

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

	do
	{
		cout << "정수를 입력하시오(끝내고 싶으면 0 입력): ";
		cin >> number;

		if (number != 0)
			sum += number;

	} while (number != 0);

	cout << endl << "입력한 정수들의 합은: " << sum << endl;

	return 0;
	
}
/*
정수를 입력하시오(끝내고 싶으면 0 입력): 1
정수를 입력하시오(끝내고 싶으면 0 입력): 2
정수를 입력하시오(끝내고 싶으면 0 입력): 1
정수를 입력하시오(끝내고 싶으면 0 입력): 0

입력한 정수들의 합은: 4
*/

 

4. do-while문 예제: 숫자 맞추기

#include <iostream>
#include <ctime> //time함수 호출
#include <cstdlib> //srand, rand함수 호출
using namespace std;

int main()
{
	srand(time(0));
	int number = rand() % 11;
	int guess;

	do {
		cout << endl << "추측한 정수의 값을 입력해주세요 ; ";
		cin >> guess;

		if (guess < number)
			cout << "사용자의 추측값은 너무 낮습니다" << endl;
		else if (guess > number)
			cout << "사용자의 추측값은 너무 높습니다" << endl;

	} while (number != guess);

	cout << guess << "은/는 사용자의 추측값이 맞습니다" << endl;

	return 0;
}
/*

추측한 정수의 값을 입력해주세요 ; 5
사용자의 추측값은 너무 높습니다

추측한 정수의 값을 입력해주세요 ; 1
사용자의 추측값은 너무 낮습니다

추측한 정수의 값을 입력해주세요 ; 3
3은/는 사용자의 추측값이 맞습니다
*/