본문 바로가기
Development/C

(C언어 기초) 7. 조건문 if

by eoieiie 2023. 8. 28.

지금까지 학습한 내용을 토대로 프로그램의 작성 순서를 살펴보면 이렇습니다. 

  1. 데이터 저장 공간 확보  (변수, 배열)
  2. 데이터를 확보된 공간에 입력 (scanf)
  3. 데이터 가공 (연산자)
  4. 화면에 출력 (printf)

이번에 배울 것은 제어문입니다. 제어문은 위와 같이 그대로 흐르는 것이 아닌, 조건에 따라 실행하거나 실행하지 않아야 할 때 사용합니다. 제어문은 선택문과 반복문 그리고 분기문으로 나뉘어집니다. 먼저 선택문을 살펴보도록 하겠습니다. 

 

if문


바로 예제를 통해 실행 과정을 알아보겠습니다.

 

#include <stdio.h>

int main (void)

{
    int a = 20;
    int b = 0;

    if (a > 10)
    {
        b = a;
    }

    printf("a : %d, b : %d\n", a, b);

    return 0;

}


//실행 결과

a : 20, b : 20

 

먼저 a는 20으로 초기화됩니다. a > 10 이 참이므로 실행문 b = a 가 수행됩니다. 따라서 b는 a와 같은 값 20을 가지게 됩니다. 만약 5행에서 a를 5로 초기화했다면 a > 10은 거짓이 되어 실행문이 실행되지 않고, b는 초깃값 0을 그대로 유지합니다. 

그렇다면 조건을 만족하지 못할 때에도 별도의 실행문이 있으려면 어떻게 해야 할까요?

 

if ~ else문


바로 예제를 통해 실행 과정을 알아보겠습니다.

 

#include <stdio.h>

int main (void)

{
    int a = 10;

    if (a >= 0)
    {
        a = 1 ;
    }

    else
    {
        a = -1;
    }
   
    printf("a : %d\n",a);

    return 0;

}


//실행 결과

 

#include <stdio.h>

int main(void)
{
    /*
        윤년 --> 4년마다, 그렇지만 100년 단위일 때는 윤년에 해당하지 않도록 설정
        윤년 --> 400년 단위일 때는 어떤 상황이던간에 윤년으로 설정
    */
   int year = 2016;
   if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
   {
        printf("%d년은 윤년입니다.\n", year);
   }
   else
   {
        printf("%d년은 윤년이 아닙니다.\n", year);
   }
   
    return 0;
}

 

~else if문


3개 이상의 실행문에서 반드시 하나를 선택하는 경우 사용합니다. 예제를 보겠습니다.

 

#include <stdio.h>

int main (void)

{
    int a = 0, b = 0;

    if (a > 0)
    {
        b = 1 ;
    }

    else if (a == 0)
    {
        b = 2;
    }

    else
    {
        b = 3;
    }
   
    printf("b : %d\n",b);

    return 0;

}


//실행 결과

b : 2

 

다음은 점수에 따른 학점을 계산하는 프로그램입니다.

 

#include <stdio.h>

int main(void)
{
    int score = 85;
    if(score >= 90)
    {
        printf("A");
    }
    else if(score >= 80)
    {
        printf("B");
    }
    else if(score >= 70)
    {
        printf("C");
    }

    return 0;
}


//실행 결과

B

 

확인 문제


윤년을 계산하는 프로그램을 작성하세요. 윤년은 4의 배수이지만 100의 배수는 아니어야 합니다. 그러나 400의 배수는 무조건 윤년으로 간주합니다. 

더보기
#include <stdio.h>

int main(void)
{
    int year = 2023;
    if ((year % 4 == 0 && year % 100 !=0) || year % 400 == 0)
    {
        printf("%d년은 윤년", year);
    }
    else
    {
        printf("%d년은 윤년이 아님", year);
    }

    return 0;
}


//실행 결과

2023년은 윤년이 아님

 

댓글