본문 바로가기

강의자료/C/C++

011. 조건을 확장시켜주는 논리 연산자.

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


논리 연산자는 조건(bool형값)들을 서로 묶어서 또 하나의 bool형 값으로 만들어주는 연산자이다.
#include  
using namespace std;

void main( )
{
	cout << "-------- bool 연산자-------------" << endl;

	// ()를 이용 우선 순위 설정
	cout << "\n-------- && == &-------------" << endl;
	cout << true << " && " << true  << " = " << (true && true) << endl;
	cout << true << " && " << false << " = " << (true && false) << endl;
	cout << false << " && " << true  << " = " << (false && true) << endl;
	cout << false << " && " << false << " = " << (false && false) << endl;

	cout << "\n-------- || == |------------" << endl;
	cout << true << " || " << true  << " = " << (true || true) << endl;
	cout << true << " || " << false << " = " << (true || false) << endl;
	cout << false << " || " << true  << " = " << (false || true) << endl;
	cout << false << " || " << false << " = " << (false || false) << endl;

	cout << "\n-------- ! ------------" << endl;
	cout << " ! " << true << " = " << (!true) << endl;
	cout << " ! " << false << " = " << (!false) << endl;

	// 비트연산자 활용.
	cout << "\n-------- ^ ------------" << endl;
	cout << true << " ^ " << true  << " = " << (true ^ true) << endl;
	cout << true << " ^ " << false << " = " << (true ^ false) << endl;
	cout << false << " ^ " << true  << " = " << (false ^ true) << endl;
	cout << false << " ^ " << false << " = " << (false ^ false) << endl;
}
# 연습문제
#include  
using namespace std;

void main( )
{
	// 사용자로부터 국어, 영어, 수학점수를 입력받고,
	// 국영수 모두 60점 이상일 경우에 "합격" 아니면 "불합격"이라고 출력하시오.

	int a, b, c;
	cout << "국어 점수 : ";
	cin >> a;
	cout << "영어 점수 : ";
	cin >> b;
	cout << "수학 점수 : ";
	cin >> c;

	if(a>=60 && b>=60 && c>=60)
		cout << "합격입니다." << endl;
	else
		cout << "불합격입니다." << endl;

	// 평균이 60점 이상이면서 각 과목당 점수가 40점 이상이면 "합격",
	// 평균이 60점 이상이지만 한 과목이라도 40점 미만일 경우 "과락",
	// 평균이 60점 미만이면 "불합격"이라고 출력하시오.

	int average = (a+b+c)/3;

	if (average >= 60)
	{
		if(a<40 || b<40 || c<40)
			cout << "과락입니다." << endl;
		else
			cout << "합격입니다." << endl;
	}
	else
	{
		cout << "불합격입니다." << endl;
	}

	// 	if(average >= 60 && (a>=40 && b>=40 && c>=40))
	// 		cout << "합격입니다." << endl;
	// 	else if(average >= 60)
	// 		cout << "과락입니다." << endl;		
	// 	else
	// 		cout << "불합격입니다." << endl;

	// 	if(average >= 60 && (a<40 || b<40 || c<40))
	// 		cout << "과락입니다." << endl;
	// 	else if(average >= 60)
	// 		cout << "합격입니다." << endl;
	// 	else
	// 		cout << "불합격입니다." << endl;

	// 	if(average >= 60 && !(a<40 || b<40 || c<40))
	// 		cout << "합격입니다." << endl;
	// 	else if(average >= 60)
	// 		cout << "과락입니다." << endl;		
	// 	else
	// 		cout << "불합격입니다." << endl;
}
#include  
using namespace std;

/*
>> 관계연산자(==, !=)와 논리연산자(&&) 이용하여 아래와 같이 출력되도록 하시오.

-- 1 ~ 100 범위의 정수에 대하여
2의 배수는 50개 
3의 배수는 33개 
6의 배수는 16개 

-- 2의 배수도 아니고 3의 배수도 아닌 수는
1	5	7	11	13	17	19	23	25	29	31	35	37	41	43	47	49	53	55	59	61	65	
67	71	73	77	79	83	85	89	91	95	97	
(으)로 모두  33개 이다.
*/

void main( )
{
	cout << "--  1 ~ 100 범위의 정수에 대하여  " << endl;
	int count2=0;
	int count3=0;
	int count6=0;
	for(int i=1 ; i<=100; i++)
	{
		if(i%2==0) count2++;
		if(i%3==0) count3++;
		if(i%6==0) count6++;
	}
	cout << "2의 배수는 " << count2 << "개 " << endl;
	cout << "3의 배수는 " << count3 << "개 " << endl;
	cout << "6의 배수는 " << count6 << "개 " << endl << endl;

	int count=0;
	cout << "-- 2의 배수도 아니고 3의 배수도 아닌 수는" << endl;
	for(int i=1 ; i<=100; i++)
	{
		if((i%2 !=0) && !(i%3 ==0))
		{
			count++;
			cout << i << "\t";
		}           
	}
	cout << endl << "(으)로 모두  " << count << "개 이다." << endl;
}