Phase 1 · C언어 입문

조건문 — 판단하는 프로그램

지금까지는 정해진 순서대로만 계산을 수행했습니다. 이제 if문과 switch문을 통해 프로그램이 사용자 입력 값에 따라 스스로 판단하고 다른 행동을 할 수 있도록 만들어 봅니다.

예상 학습 시간 : 120분
난이도 : ★★★☆☆ 초급
사전 지식 : Step 04 입력과 출력
다음 단계 : 반복문
01

학습 목표

이번 단계를 완료하면 다음 능력을 갖추게 됩니다.

1
조건문의 개념을 이해한다.
2
if문과 if ~ else문을 사용할 수 있다.
3
else if를 이용하여 여러 조건을 처리할 수 있다.
4
switch ~ case문을 사용하여 메뉴 선택 구조를 만든다.
5
비교/논리 연산자를 조건문과 결합할 수 있다.
6
실제 생활에서 사용하는 판단 프로그램을 구현할 수 있다.
02

조건문이란?

조건문은 쉽게 말하면 "만약 ~라면"을 프로그램으로 표현하는 것입니다.

질문: 시험 점수가 60점 이상인가?

  • YES → 합격
  • NO → 불합격
조건: score >= 60 참인가?
YES

합격
NO

불합격

조건문은 이후 게임, 로그인, 회원관리, 결제, IoT 제어 등 거의 모든 프로그램의 핵심이 됩니다.

03

if문과 if ~ else문

1. 기본 if문

조건이 참(True)일 때만 실행됩니다.

⚙️ C
#include <stdio.h>
int main() {
    int age = 25;
    if (age >= 20) {
        printf("성인입니다.\n");
    }
    return 0;
}

2. if ~ else문

조건이 참일 때와 거짓일 때를 모두 처리합니다.

⚙️ C
#include <stdio.h>
int main() {
    int age;
    printf("나이를 입력하세요 : ");
    scanf("%d", &age);

    if (age >= 20) {
        printf("성인입니다.\n");
    }
    else {
        printf("미성년자입니다.\n");
    }
    return 0;
}
04

비교 연산자와 = 주의사항

연산자 의미 예제
==같다a == b
!=같지 않다a != b
>크다a > b
<작다a < b
>=크거나 같다a >= b
<=작거나 같다a <= b
= 와 == 절대 혼동 금지!
  • = 대입 : score = 100; (score에 100을 저장해라)
  • == 비교 : if (score == 100) (score가 100과 같은가?)

if (score = 100) 처럼 쓰면 에러가 나거나 항상 참(True)으로 처리되는 심각한 논리 오류가 발생합니다!

05

else if 다중 조건문

조건이 3개 이상일 때는 else if를 사용합니다. (예: 점수에 따른 학점 부여)

⚙️ C
if (score >= 90) {
    printf("A등급\n");
} else if (score >= 80) {
    printf("B등급\n");
} else if (score >= 70) {
    printf("C등급\n");
} else {
    printf("F등급\n");
}
조건의 순서가 매우 중요합니다!

만약 if (score >= 60) 을 맨 위에 적어버리면, 90점을 받아도 첫 조건에서 참이 되어버려 D등급(또는 통과) 처리가 되고 빠져나가버립니다. 큰 범위부터 좁은 범위로 순서대로 작성해야 합니다.

06

논리 연산자와 조건문 결합

여러 조건을 동시에 판단할 때 && (AND)와 || (OR)를 활용합니다.

AND (&&) - 모두 참이어야 실행

⚙️ C
if (age >= 20 && age <= 60) {
    printf("청장년층입니다.\n");
}

OR (||) - 하나라도 참이면 실행

⚙️ C
if (age < 13 || age >= 65) {
    printf("무료 입장 대상입니다.\n");
}
07

중첩 조건문 (Nested if)

조건문 안에 또 다른 조건문을 넣을 수 있습니다. 로그인을 떠올려 보세요.

아이디가 맞는가?
↓ YES
비밀번호가 맞는가?
YES

로그인 성공
NO

비밀번호 오류
⚙️ C
if (input_id == id) {
    // 아이디가 맞을 때만 비번 물어보기
    printf("비밀번호 : ");
    scanf("%d", &input_password);

    if (input_password == password) {
        printf("로그인 성공!\n");
    } else {
        printf("비밀번호 오류\n");
    }
} else {
    printf("존재하지 않는 아이디입니다.\n");
}
08

switch ~ case 문

특정 정확한 값으로 메뉴를 나눌 때는 switch문이 가독성이 좋습니다.

⚙️ C
int menu;
printf("메뉴 선택(1~3): ");
scanf("%d", &menu);

switch (menu) {
    case 1:
        printf("학생관리 선택\n");
        break; // 여기서 switch문을 빠져나감
    case 2:
        printf("성적관리 선택\n");
        break;
    case 3:
        printf("회원관리 선택\n");
        break;
    default:
        // 아무 case에도 해당하지 않을 때
        printf("잘못된 메뉴 번호입니다.\n");
}
💡 break의 중요성

break;가 없으면 조건에 맞는 코드를 실행한 후, 그 아래에 있는 다른 case의 코드들까지 멈추지 않고 쭈욱 모두 실행해 버립니다. 반드시 case 마지막에 break를 잊지 마세요!

09

실습 문제

🧪
Practice 01
홀수 / 짝수 판별 ( % 활용 )
⚙️ C
#include <stdio.h>
int main() {
    int number;
    printf("숫자를 입력하세요 : ");
    scanf("%d", &number);

    if (number % 2 == 0) {
        printf("짝수입니다.\n");
    } else {
        printf("홀수입니다.\n");
    }
    return 0;
}
🧪
Practice 02
세 숫자 중 가장 큰 수 찾기
⚙️ C
#include <stdio.h>
int main() {
    int a, b, c, max;
    printf("세 숫자를 입력하세요 : ");
    scanf("%d %d %d", &a, &b, &c);

    max = a; // 처음엔 무조건 첫 번째가 크다고 가정

    if (b > max) { max = b; }
    if (c > max) { max = c; }

    printf("가장 큰 수 : %d\n", max);
    return 0;
}
🧪
Practice 03
계산기 메뉴 (switch ~ case)
⚙️ C
switch (menu) {
    case 1:
        printf("덧셈 결과: %d\n", a + b); break;
    case 4: // 나눗셈 (0으로 나누기 방지 조건문 추가)
        if (b != 0) {
            printf("나눗셈 몫: %d\n", a / b);
        } else {
            printf("0으로 나눌 수 없습니다!\n");
        }
        break;
}
10

STEP 05 최종 프로젝트

🚀 Mission

나만의 생활 판단 프로그램

사용자로부터 나이, 점수, 숫자를 입력받아 각각 성인/미성년자, 성적 등급(A~F), 홀수/짝수를 모두 한 번에 판단해서 출력하는 종합 프로그램을 작성하세요.

[도전 과제] 윤년 판별기 만들기

  • 4로 나누어 떨어지면 윤년
  • 단, 100으로 나누어 떨어지면 평년 (예외)
  • 단, 400으로 나누어 떨어지면 다시 윤년 (예외)

(논리 연산자 &&|| 를 한 줄에 조합해 보세요!)

11

STEP 05 완료 체크리스트

조건문의 개념을 이해한다.
if, if~else, else if 구조를 직접 작성할 수 있다.
중첩 조건문(if 안에 if)의 흐름을 이해한다.
= 와 == 의 차이점을 확실히 숙지했다.
&&, || 논리 연산자를 조건문에 결합할 수 있다.
switch~case 문법을 이해하고 break의 역할을 설명할 수 있다.
입력값(scanf)을 기반으로 다른 결과를 출력하는 판단(if) 프로그램을 만들 수 있다.
분기 처리 (Branching) 완성

입력, 연산 처리에 이어 프로그램의 핵심 기능인 "판단과 분기"까지 배웠습니다. 이제부터 여러분의 코드는 스스로 생각하고 결정하는 지능을 갖추게 되었습니다.

이전 : Step 04 Step 06 : 반복문