개발&코딩/C

C언어 조건제어문 if문/else문 과 switch/case문 예제와 기초

우동이 2020. 9. 9. 19:22

프로그래밍 언어에서는 반복과 조건을 제어하기 위한 기능의 구문이 따로 존재합니다.

이를 제어문이라고 칭하며 오늘 배워볼 것은 제어 문중에서도 조건을 설정하는

조건 제어문에 대해 배워보겠습니다.

 

C언어에는 두 가지의 조건 제어문이 존재합니다.

  • if/else문 : 조건만을 설정하는 데에 특화되어있다.
  • switch/case : 주어진 변수를 여러 조건에 비교하는 경우

 


1. a보다 b가 큰 경우의 조건식

#include <stdio.h> // 헤더파일 선언

int main() // main 함수
{
    int a=10;
    int b=20;

    if(a<b)
        printf("a보다 b가 크다")
    else
        printf("a보다 b가 작다")
    
    return 0; // 코드 종료
}

>>> a보다 b가 크다

a와 b 두 변수의 값의 크기에 대한 비교 코드입니다.

a가 b보다 클경우에는 a보다 b가 크다는 메시지가 출력되고

그 이외의 경우에는 a보다 b가 작다는 메시지가 출력됩니다.

 

하지만 여기서 주의할 점은 else문은 a보다 b가작은 경우의 조건으로 설정된 구문이 아닌

a보다 b 가 큰 경우 이외의 모든 경우에 해당하는 조건식이므로

a나 b가 존재하지 않는 경우의 에러까지도 다 포함됩니다.

 


2. 절댓값 출력하기 예제

#include <stdio.h> // 헤더파일 선언

int main() // main 함수
{
    int num=0;
    printf("입력할 정수의 값 >> "); 
    scanf("%d", &num);
    if(num<0)
        printf("%d",-(num));
    else
        printf("%d",num);

    
    return 0; // 코드 종료
}

>>> 입력할 정수의 값 >> 
-5
>>> 5

>>> 입력할 정수의 값 >> 
5
>>> 5

 

절댓값이란 음수와 양수로 구분되지 않는 값의 절대적인 크기를 의미합니다.

위 코드에서는 음수일 때는 양수 값으로 양수일 때는 값의 크기를 그대로 출력하는 조건식이 설정되어있습니다.

 


3. 지하철 무료 이용 검사 코드

#include <stdio.h>

int main()
{
    int age=0;
    printf("6세이하 70세 이상은 지하철 무료이용이 가능합니다 >>");
    scanf("%d",&age);

    if(age<=6 || age>=70)
        printf("무료입장이 가능합니다.");
    else
        printf("무료입장이 불가능합니다 돈을 지불하세요.");

    return 0;
}

>>> 6세이하 70세 이상은 지하철 무료이용이 가능합니다 >>
30
>>> 무료입장이 불가능합니다 돈을 지불하세요.

>>> 6세이하 70세 이상은 지하철 무료이용이 가능합니다 >>
71
>>> 무료입장이 가능합니다.

지하철 무료이용 가능 여부를 판단해주는 코드입니다.

6세 이하 70세 이상만 지하철 무료 이용이 가능하다는 조건식은 다음과 같습니다.

age <=6 || age>=70

 

논리 연산자 대응 표

&& AND
|| OR
! NOT


4. 시험 점수 평균값으로 학점 출력하기

#include <stdio.h>

int main()
{
    double avg=0;

    printf("당신의 학점을 출력합니다 평균 점수를 입력하세요 >> ");
    scanf("%lf", &avg);

    if(avg>=90.0)
        printf("A");
    else if(avg>=80.0)
        printf("B");
    else if(avg>=70.0)
        printf("C");
    else if(avg>=60.0)
        printf("D");
    else
        printf("F");
        
    return 0;
}


>>> 당신의 학점을 출력합니다 평균 점수를 입력하세요 >> 30
F
>>> 당신의 학점을 출력합니다 평균 점수를 입력하세요 >> 70
C
>>> 당신의 학점을 출력합니다 평균 점수를 입력하세요 >> 90
A

 

평균점수를 통해 학점을 출력하는 코드입니다.

여기서 else if라는 구문이 처음으로 나오는데 else if 문은 여러 조건을 설정해야 할 경우

추가 조건을 달수 있는 구문입니다.

위 코드에서도 여러 조건을 if문과 elseif 구문으로 함께 설정했음을 알 수 있습니다.

 


4. 학년별 대학 등록금 책정하기

#include <stdio.h>

int main()
{
    int grade=0;
    

    printf("당신의 학년을 입력하십시오 >> ");
    scanf("%d", &grade);

    switch(grade){
    case 1:
        printf("1학년의 등록금은 200만원입니다");
        break;
    case 2:
        printf("2학년의 등록금은 400만원입니다");
        break;
    case 3:
        printf("3학년의 등록금은 800만원입니다");
        break;
    case 4:
        printf("4학년의 등록금은 1600만원입니다");
        break;
    default:
        printf("축하합니다 대학생이 아니거나 제출할 등록금이 없습니다.");
        break;
    }

    return 0;
}


>>> 당신의 학년을 입력하십시오 >>  3
3학년의 등록금은 800만원입니다
>>> 당신의 학년을 입력하십시오 >>  4
4학년의 등록금은 1600만원입니다
>>> 당신의 학년을 입력하십시오 >>  5
축하합니다 대학생이 아니거나 제출할 등록금이 없습니다.

switch/case 조건문은 위에서 말했듯 입력된 변수에 다양한 조건을 살펴봐야 할 경우 사용됩니다.

즉 한 변수의 여러 케이스를 살펴보는 기능이라고 할 수 있습니다.

 

위에서는 입력받은 학년 변수(grade)가 1에서 4학년까지의 조건이 각각 다 다릅니다.

default는 변수에 올바른 값이 입력되지 않아 에러가 발생할 경우 기본으로 출력될 에러 메시지를 지정하는 구간입니다.