Coding/C

[C언어] 조건문(if, else, else if) - 코딩도장

GunP4ng 2023. 12. 10. 22:44

[코딩도장] Unit 17 ~ 19


1. if, else, else if 사용하기

1. if 사용하기

if 문은 조건식에 따라 결과를 다르게 출력할 수 있는 조건문이다

if (조건식)
{
    코드    // 조건식이 만족할 때 코드 실행
}

 

if 문에서 실행할 코드가 한 줄이라면 중괄호를 생략할 수 있다

if (조건식)
    코드    // 조건식이 만족할 때 코드 실행

 

※  실행할 코드가 두 줄 이상일 때는 생략에 주의해야 한다

 

C 언어에서 if는 0일 때 거짓( false ), 0이 아닐 때 참( true )으로 동작한다

#include <stdio.h>
 
int main()
{
    if (2)    // 0이 아니므로 참
        printf("참\n");
    else
        printf("거짓\n");
 
    return 0;
}

 

위의 코드를 실행해보면 참이 출력되는 것을 볼 수 있다

C 언어에서는 0은 거짓이고, 0이 아닌 값은 참이 된다

실수도 마찬가지로 0.0f 는 거짓이고 0.0f 가 아닌 값들은 참이 된다

 

 

2.  if - else 사용하기

if 와 else 를 사용하면 조건이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다

if (조건식)
{
    코드1    // 조건식이 만족할 때 코드 실행
}
else
{
    코드2    // 조건식이 만족하지 않을 때 코드 실행
}

 

if 문과 마찬가지로 실행할 코드가 한 줄이라면 중괄호를 생략할 수 있다

 

 

3. else if 사용하기

else if는 여러 개의 조건식을 지정하여 각각 다른 코드를 실행할 수 있다

if (조건식1)
{
    코드1    // 조건식1이 만족할 때 코드 실행
}
else if (조건식2)
{
    코드2    // 조건식2가 만족할 때 코드 실행
}
else if (조건식3)
{
    코드3    // 조건식3이 만족할 때 코드 실행
}
else
{
    코드4    // 아무 조건에도 만족하지 않을 때 코드 실행
}

 


2. 심사문제

17.8 청소년 콘텐츠 관람 제한하기

표준 입력으로 나이(만 나이)가 입력됩니다. 여기서 콘텐츠를 보여주기 전에 나이에 따라 제한 문구를 출력하고자 합니다. 만 18세 미만이면 "청소년 관람 불가"를 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다).

정답에는 C 언어 컴파일러에서 정상적으로 컴파일되는 전체 코드를 입력해야 합니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    int age;
    scanf("%d", &age);
    
    if (age < 18)
    {
        printf("청소년 관람 불가");
    }
    
    return 0;
}

18.9 else 사용하기

표준 입력으로 문자가 입력됩니다. 입력된 문자가 a이면 "a입니다."를 출력하고, a가 아니면 "a가 아닙니다."를 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다).

정답에는 C 언어 컴파일러에서 정상적으로 컴파일되는 전체 코드를 입력해야 합니다.

#include <stdio.h>
 
int main() {
    char c;
    scanf("%c", &c);
    
    if (c == 'a')
        printf("a입니다.");
    else
        printf("a가 아닙니다.");
 
    return 0;
}

18.10 합격 여부 판단하기

표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다. 여기서 네 과목의 평균 점수가 85점 이상일 때 합격이라고 정했습니다. 평균 점수에 따라 "합격", "불합격"을 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다). 단, 점수는 0점부터 100점까지만 입력받을 수 있으며 범위를 벗어났다면 "잘못된 점수"를 출력하고 합격, 불합격 여부는 출력하지 않아야 합니다.

정답에는 C 언어 컴파일러에서 정상적으로 컴파일되는 전체 코드를 입력해야 합니다.

#include <stdio.h>
 
int main() {
    int a, b, c, d, result;
    scanf("%d %d %d %d", &a, &b, &c, &d);
    
    result = (a + b + c + d) / 4;
    
    if (a < 0 || a > 100 || b < 0 || b > 100 || c < 0 || c > 100 || d < 0 || d > 100)
        printf("잘못된 점수");
    else if (result >= 85)
        printf("합격");
    else
        printf("불합격");
    
    return 0;
}

 

if 문의 조건은 복잡해 보일수도 있다

0 < a < 100

0 < b < 100

0 < c < 100

0 < d < 100

4개의 조건 중 하나만 참이어도 "잘못된 점수" 가 출력되도록 했다


19.5 교통카드 시스템 만들기

표준 입력으로 나이(만 나이)가 입력됩니다. 교통카드 시스템에서 시내버스 요금은 다음과 같으며 각 나이에 맞게 요금을 차감한 뒤 잔액이 출력되게 만드세요(if, else if 사용). 현재 교통카드에는 10,000원이 들어있습니다.

정답에는 밑줄 친 부분에 들어갈 코드만 작성해야 합니다.

  • 어린이(초등학생, 만 7세 이상 12세 이하): 450원
  • 청소년(중∙고등학생, 만 13세 이상 18세 이하): 720원
  • 어른(일반, 만 19세 이상): 1,200원
#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>

int main()
{
    int balance = 10000;    // 교통카드 잔액
    int age;

    scanf("%d", &age);

    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________
    _____________________________

    printf("%d\n", balance);

    return 0;
}

 

정답

if (age >= 7 && age <= 12){
    balance -= 450;
}
else if (age >= 13 && age <= 18){
    balance -= 720;
}
else if (age >= 19){
    balance -= 1200;
}

 

if 문의 조건을

7 <= age <= 12 일 때는 450을 빼고

13 <= age <= 18 일 때는 720을 빼고

19 <= age 일 때는 1200을 빼도록 했다