본문 바로가기

C, C++

C++/점수별 등급 주기/if/switch

점수별로 A, B, C, D, F 로 등급을 주자. if 문과 switch 문 두 가지 방법을 사용해 보고자 한다.

 

if 사용해서.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "config.h"
 
void main() {
 
    int cpp, java, jsp;
 
 
    // printf("세 과목의 점수를 입력하세요 : "); 
    // scanf_s("%d %d %d", &cpp, &java, &jsp); 
    // 혹은
    cout << "세 과목의 점수를 입력하세요 : ";
    cin >> cpp >> java >> jsp;
 
    int total = cpp + java + jsp;
    //double average = total / 3;  // 정수와 정수의 연산은 정수이므로, 소수점자리가 0만 나옴. - 둘 중 하나를 실수로 바꿔주면 됨 ex) 3 -> 3.0
    // 아니면 형변환(casting) 해주기 
 
    double average = (double)total / 3;
    printf("총점 : %d, 평균 : %.2f\n", total, average);
 
    // if(조건식) {
    //    조건식이 참일 경우 실행할 문장;   => 들여쓰기 하는게 보기 편함.
    //    ...;
    //    } else {
    //        조건식이 거짓일 경우 실행할 문장;
    //        ...;
    //    }
 
    if (average >= 90) {
        printf("A\n");
    }
    else if(average >= 80) {    // 90 > average >= 80 => 문법적 오류 x, 실행 안됨. True, False 는 각각 1, 0 이기 때문에 조건 만족안됨.
        printf("B\n");
    }
    else if (average >= 70) {
        printf("C\n");
    }
    else if (average >= 60) {
        printf("D\n");
    }
    else {
        printf("F\n");
    }
cs

 

switch 를 사용해서 평균이 100점인 학생에게는 "참 잘했어요" 와 "A" 가 같이 찍히도록 해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
    switch ((int) average / 10) {
    case 10:
        cout << "참 잘했어요" << endl;
    case 9:
        cout << "A" << endl
        break;
    case 8:
        cout << "B" << endl
        break;
    case 7:
        cout << "C" << endl
        break;
    case 6:
        cout << "D" << endl
        break;
    default:
        cout << "F" << endl
        break
 
    }
cs