202109023_C++_공부기록
- switch 문 작성 규칙
- 조건 연산자 (삼항연산자)
- 연산자 우선순위 / 결합성
1. switch 문 작성 규칙
switch (switch - 수식)
{
case 값1: 문장1; break;
case 값2: 문장2; break;
...
case 값n: 문장n; break;
default: case가 부합되지 않을 때, 실행되는 문장;
}
▶ switch - 수식의 결과는 정수형식이어야 하며, 괄호 안에 작성한다.
▶ 값1, 값2,... 값n은 정수형식이어야 하며, 변수를 포함할 수 없다.
▶ case문이 실행되면 break문까지 혹은 switch 문의 끝까지 실행된다. (break가 생락되어있다면 끝까지 실행)
▶ break문은 즉시 switch문을 빠져나가게 하며, 생략이 가능하다.
▶ default문은 생락가능하며, 어느 값과도 부합되지 않을 때 실행된다.
switch문 (실습1)
#include <iostream>
using namespace std;
int main() {
int score;
cout << "점수를 입력하세요: ";
cin >> score;
switch ( score / 10 )
{
case 10:
case 9: cout << " Grade is A" << endl; break;
case 8: cout << " Grade is B" << endl; break;
case 7: cout << " Grade is C" << endl; break;
case 6: cout << " Grade is D" << endl; break;
default: cout << "Grade is F" << endl;
}
}
//점수를 입력하세요: 99
// Grade is A
2. 조건 연산자 (삼항연산자)
: 변수의 조건에 따라 값을 대입하고 싶을 때, 조건식을 사용하여 작성할 수 있다.
if (x > 0)
y = 1
else
y = -1;
if - else문을 조건식으로 바꾸면, 간단히 작성할 수 있다.
y = (x > 0) ? 1 : -1;
//조건식의 문법
부울식 ? 수식1 : 수식2 ;
조건연산자 (실습2)
#include <iostream>
using namespace std;
int main()
{
int num1, num2, max;
cout << " 두 수를 입력하시오: ";
cin >> num1 >> num2;
max = num1 > num2 ? num1 : num2;
cout << "max는 " << max << " 입니다." << endl;
return 0;
}
// 두 수를 입력하시오: 12 10
//max는 12 입니다.
3. 연산자 우선순위/결합성
연산자 우선순위와 결합성을 연산자의 실행순서를 결정한다
▶ 괄호 안의 내용이 가장 먼저 실행된다. (가장 안쪽부터)
▶ 괄호가 없는 수식이 계산될 때는 우선순위 규칙에 따른다.
▶ 같은 우선순위 연산자가 나란히 있는 경우에는 결합성이 순서를 정한다.
(대입연산자를 제외한 모든 이항 연산자는 왼쪽 결합성을 가짐)
* 결합성은 왼쪽부터 실행되는지 오른쪽부터 실행되는지
1순위. 단항연산자
var++ var-- (후위) ▶ 왼쪽부터
+,- (단항 양과 음), ++var --var (전위)▶ 전위는 오른쪽부터 (변수를 먼저 +하고 또 +)
static_cast<type>(v),(type) (형변환) ▶ 형변환을 해야지 계산을 하니까 우선순위가 높음
!(NOT)
2순위. 산술연산자
곱하기, 나누기, 나머지
더하기 빼기
3순위. 관계연산자
> >= < <= (비교) ▶ 비교 먼저하고 계산을 할 수 없음. 산술을 해야지 비교가 가능
== != (동등비교)
4순위. 논리연산자 ▶비교를 해야지 같이 묶든 말든 함
&& (AND)
|| (OR)
5순위. 대입연산자
= += -= *= /= &= ▶ 대입연산자는 오른쪽부터 / 대입은 마지막에
예제 : 세금계산 (실습3)
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << "**********" << endl;
cout << "(0 : 1인과세, 1 : 부부합산, 2 : 부부별도, 3 : 가장과세) " << endl;
cout << "납세의무자 타입을 입력하시오: ";
int status;
cin >> status;
cout << "과세소득을 입력하시오: ";
double income;
cin >> income;
double tax = 0;
switch (status)
{
case 1:
{
if (income <= 16700) tax = income * 0.10;
else if (income <= 67900) tax = 16700 * 0.10 + (income - 16700) * 0.15;
else if (income <= 137050)
tax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (income - 67900) * 0.25;
else if (income <= 208850)
tax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25
+ (income - 137050) * 0.28;
else if (income <= 372950)
tax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25
+ (208850 - 137050) * 0.28 + (income - 208850) * 0.33;
else
tax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25
+ (208850 - 137050) * 0.28 + (372950 - 2088550) * 0.33 + (income - 372950) * 0.35;
break;
}
}
cout << "당신의 부부합산 과세는 " << fixed << setprecision(2) << tax << endl;
return 0;
}
/*
**********
(0 : 1인과세, 1 : 부부합산, 2 : 부부별도, 3 : 가장과세)
납세의무자 타입을 입력하시오: 1
과세소득을 입력하시오: 350000
당신의 부부합산 과세는 93321.00
*/
'School Study > 2021-2' 카테고리의 다른 글
[week 06] C++ 복습_5장 반복문 (1) (0) | 2021.11.26 |
---|---|
[week 05] C++ 복습_4장 수학함수, 문자, 문자열 (0) | 2021.10.17 |
[week 03] C++ 복습_3장 선택문 (1) (0) | 2021.10.07 |
[week 02] C++ 복습_2장 기본 프로그래밍 (0) | 2021.09.30 |
[week 02] 미벡 기초 복습 (벡터와 벡터공간) (0) | 2021.09.29 |