[C언어][초급] Chapter25. 조건문 – else if 사용법과 순차 조건 분기 구조
조건이 여러 개인 경우엔 어떻게 해야 할까?
앞에서 if와 if-else를 배웠죠.
하지만 현실의 조건은 하나의 참/거짓으로 나뉘기보다는, **"이 조건이 아니면 저 조건", "그것도 아니면 다른 조건"**처럼 여러 가지 상황을 나눠야 할 때가 많습니다.
이럴 때 사용하는 것이 바로 else if 문입니다.
● else if란?
else if는 여러 개의 조건을 순차적으로 검사할 수 있게 해주는 문법입니다.
위의 조건이 거짓일 경우 다음 조건을 검사하고, 마지막까지 모두 거짓이면 else가 실행됩니다.
if (조건1) {
// 조건1이 참일 때 실행
} else if (조건2) {
// 조건2가 참일 때 실행
} else if (조건3) {
// 조건3이 참일 때 실행
} else {
// 위 조건 모두 거짓일 때 실행
}
● 예제: 점수에 따라 등급 출력
int score = 82;
if (score >= 90) {
printf("A등급\n");
} else if (score >= 80) {
printf("B등급\n");
} else if (score >= 70) {
printf("C등급\n");
} else {
printf("재시험 대상\n");
}
- score가 90 이상이면 A등급
- 80 이상 90 미만이면 B등급
- 70 이상 80 미만이면 C등급
- 그 외는 재시험 대상
● else if문의 특징
- 조건을 위에서부터 차례대로 검사하며,
한 번 참이 되면 나머지는 검사하지 않고 종료됩니다. - 조건의 순서가 중요합니다!
범위가 넓은 조건을 먼저 쓰면, 좁은 조건이 무시될 수 있습니다.
● 잘못된 예시 (주의!)
int score = 95;
if (score >= 80) {
printf("B등급\n");
} else if (score >= 90) {
printf("A등급\n"); // 실행되지 않음
}
- score = 95인데 첫 번째 조건이 참이므로 "B등급" 출력 후 종료됨
- 따라서 90점 이상 조건을 먼저 검사했어야 합니다.
● else if vs 중첩 if문
else if는 중첩 구조보다 가독성이 훨씬 좋고, 실수하기도 덜합니다.
조건이 여러 개일 땐 웬만하면 else if로 작성하는 것이 좋습니다.
else if 문은 여러 개의 조건을 순차적으로 검사할 수 있도록 도와주는 조건 분기 구조의 확장판입니다.
조건이 많아질수록 else if를 사용하면 코드를 깔끔하고 명확하게 만들 수 있어요.
실습 문제
아래 문제는 직접 코드를 작성해보고, 실행 결과를 확인한 후 스스로 정답을 유추해보는 형태입니다.
정답은 바로 아래에서 확인할 수 있습니다.
문제 1
정수형 변수 score가 다음과 같은 기준에 따라 등급을 출력하도록 if, else if, else 문을 작성하세요.
- 90점 이상: "A등급"
- 80점 이상: "B등급"
- 70점 이상: "C등급"
- 그 외: "재시험"
문제 2
다음 코드의 실행 결과는?
int age = 17;
if (age >= 65) {
printf("노인입니다.\n");
} else if (age >= 20) {
printf("성인입니다.\n");
} else {
printf("미성년자입니다.\n");
}
문제 3
x가 0보다 크면 "양수", 0이면 "0", 0보다 작으면 "음수"를 출력하는 if-else if-else 문을 작성하세요.
문제 4
아래 코드에서 "B등급"이 출력되지 않도록 조건 순서를 수정하세요.
int score = 95;
if (score >= 80) {
printf("B등급\n");
} else if (score >= 90) {
printf("A등급\n");
}
문제 5
다음 중 else if를 올바르게 사용한 코드는?
A.
if (x > 0) {
printf("양수");
}
else {
if (x == 0)
printf("0");
}
B.
if (score >= 90)
printf("A");
else
score >= 80
printf("B");
C.
if (n == 1)
printf("1");
else if (n == 2)
printf("2");
else
printf("기타");
▶ 정답 확인하기
정답 1
int score = 75;
if (score >= 90) {
printf("A등급\n");
} else if (score >= 80) {
printf("B등급\n");
} else if (score >= 70) {
printf("C등급\n");
} else {
printf("재시험\n");
}
정답 2
출력: 미성년자입니다.
설명: age가 17 → 모든 조건이 거짓 → else 실행
정답 3
int x = -5;
if (x > 0) {
printf("양수\n");
} else if (x == 0) {
printf("0\n");
} else {
printf("음수\n");
}
정답 4
if (score >= 90) {
printf("A등급\n");
} else if (score >= 80) {
printf("B등급\n");
}
정답 5
정답: C
설명: A는 중첩 if이고 B는 else 다음에 조건식을 쓸 수 없음.
C는 else if를 정확히 사용함.