C언어

C언어 switch문

5_jinseok12 2018. 1. 9. 14:50
728x90

 

 

switch문을 하기전에 우선 전에 했던 if문을 간단하게 보자

int grade로  변수를 만들고 scanf로 사용자가 원하는 값을 입력하도록 위에 설정을 해둔다.

그런 다음 if문에 조건을 제시하면 되는데

아래 사진 같은 경우는 성적을 나타낼 때 사용한다. 하지만 그러기위해선

몇가지 연산자를 알아야 한다. 

 

우선 논리연산자를 알아보자

논리 연산자는 ( && (AND) , || (OR) , !(NOT) )이렇게 세가지가 있다

&&가 뜻하는 의미는 AND의 뜻이다

즉 양쪽의 항이 참과 거짓이 들어가고 왼쪽항과 오른쪽항이 모두 참이어야 실행한다.

범위안에 속하지 않다면 거짓이다.

 

|| 는 OR의 뜻이다. 오른쪽과 왼쪽항 둘중 하나만 참이어도 참으로 실행한다.

 

! 는 NOT을 뜻한다(값을 반전시켜주는 기능을 한다) 오른쪽항에만 적용되고 왼쪽항은 안된다. 값이 True 라면 False 로 반전시켜준다.

 

밑에 사진에서는 &&를 사용했다.

 

 

&&을 사용해서  grade가 100보다 작거나 같고 0과 같거나 클때

"올바른 성적입니다" 를 출력한다 즉 범위가 0이상 100이하 에는 출력한다.

나머지 외에 숫자(0미만 , 100초과)일 경우 "올바르지않은 성적입니다"가 출력된다.

 

 

 

50점을 입력했을때의 결과값.

 

 

 

이제  switch 문으로 넘어가보자.

switch ~ case 문은 if문에 비해 활용도가 조금 떨어지는 편이다.

if문 같은 경우에는 참과 거짓으로 대답이 나오는 것들은 대부분 출력이 가능하지만

switch ~ case문은 ==(같다)만 알 수 있다.

하나씩 물어보는 case by case를 사용해야 한다.

 

 

크다 작다가 안되고 같은지만 알 수 있다.

switch는 결과값이 :에서부터 끝까지 다 출력되기 때문에 break; 사용해야한다

break란 제어문을 탈출하는 기능을 가지고 있다.

 

 

이런식으로 출력할 수 있지만 이건 굉장히 비효율적인 노가다이다.

왜냐하면 0부터 100까지 다 입력해야 하기 때문이다.

그렇다면 간단하게 나타내려면 어떻게 해야 할까

 

 

 

 

 

정수와 정수를 나누면 정수가 나온다. 즉 grade와 10을 나누면

98점도 9, 97점도 9, 90점도 9 등등 나타낼 수 있다

90~ 100은 A학점

80점대는 B학점

70점대는 C학점

60점대는 D학점

이런식으로 간단하게 나타낼 수 있다.

 

 

if문에서 else와 비슷한 역할을 하는 게 switch~case 문에도 있다

 

 

바로 default 이다. 이건 60점 미만인 것은 모두 F학점 이라는 의미이다.

 

 

 

10점을 입력했을때 10으로 나누면 1이 나오기 때문에 6미만이므로 F학점이 나온다.

 

 

 

여기서 성적을 150점으로 초과하여 넣었을 땐 switch까지 오기 전에 위에 if 문에서 처리해버리기 때문에 올바르지않은 성적입니다. 하고 프로그램이 끝나버린다.

 

반응형

'C언어' 카테고리의 다른 글

C언어 while문(break,continue)  (0) 2018.01.14
C언어 while문과 for문  (0) 2018.01.10
C언어 if 문  (0) 2018.01.08
C언어 입력함수 scanf  (0) 2018.01.05
C언어 배열과 입력함수  (0) 2018.01.05