39. 조건문 (if else)

C언어에서는 조건에 따라 수행할 작업을 판단하거나 반복해서 수행하는 등의 제어문을 제공해요.
조건 표현식에 따라 구문을 수행하는 조건문과 조건 표현식이 참일 동안 반복해서 구문을 수행하는 반복문, 표현식의 값에 따라 수행할 위치를 선택하는 선택문 등이 있어요.

그리고 미리 특정 코드에 대응하는 표현을 약속하는 매크로 구문을 제공하고 있어요.
이번 장에서는 제어문과 기본적인 매크로 구문을 다루기로 할게요.

조건문

if 조건문은 조건식이 참일 때 수행하는 구문이예요.
거짓일 때 수행 구문도 표현할 때 else를 사용하죠.

if ( 조건 표현식) 수행 구문;
if ( 조건 표현식) 수행 구문; else 수행 구문;

조건 표현식은 참인지 거짓인지 판별할 수 있는 표현을 사용해요.
조건 표현식의 값은 논리 연산에서 설명했던 것처럼 0은 거짓이고 0이외의 것은 참이예요.

조건에 따라 수행할 구문이 하나 이상이면 블록을 지정하여 작성하세요.
조건문이나 반복문에서 수행할 구문을 작성할 때 블록을 언제나 지정하는 것도 좋은 습관이예요.

다음은 if 조건문을 이용하여 하나의 정수를 입력받아 홀수인지 확인하는 코드예요.
if 조건문에 num%2를 조건식으로 전달하여 나머지가 있으면 참이므로 if 조건문 내부의 출력문을 수행합니다.
하지만 나머지가 없으면 거짓으므로 if 조건문 내부의 출력문은 수행하지 않아요.
◈ if 조건문을 사용한 예

#include <stdio.h>
int main()
{
    int num=0;
    printf("정수를 입력하세요.\n");
    scanf_s("%d",&num);   
 
    if(num % 2) //2로 나눈 나머지가 참일 때 (홀수일 때)
    {
        printf("입력한 수 %d은(는) 홀수입니다. \n",num);
    }
    return 0;
}

◈ 실행 결과1

정수를 입력하세요.
3 (최종 사용자가 3을 입력했다고 가정)
입력한 수 3은(는) 홀수입니다.

◈ 실행 결과2

정수를 입력하세요.
2 (최종 사용자가 2를 입력했다고 가정)

다음은 if else 문을 이용하여 3의 배수인지 확인하는 코드예요.
if 조건문에 num%3 조건식을 사용했어요.
만약 3의 배수가 아니면 조건식의 결과는 1혹은 2이므로 참이예요.
그리고 3의 배수면 조건식의 결과는 0이므로 거짓이죠.

◈ if else 조건문을 사용한 예

#include <stdio.h>
int main()
{
    int num=0;
    printf("정수를 입력하세요.\n");
    scanf_s("%d",&num);
  
    if(num % 3) //3로 나눈 나머지가 참일 때 (나머지가 0이 아닐 때)
    {
        printf("입력한 수는 3의 배수가 아닙니다. \n");
    }
    else //3로 나눈 나머지가 거짓일 때 (나머지가 0일 때)
    {
        printf("입력한 수는 3의 배수입니다. \n");
    }
    return 0;
}

◈ 실행 결과1

정수를 입력하세요.
3 (최종 사용자가 3을 입력했다고 가정)
입력한 수는 3의 배수입니다.

◈ 실행 결과2

정수를 입력하세요.
5 (최종 사용자가 5를 입력했다고 가정)
입력한 수는 3의 배수가 아닙니다.

제어문은 문법적으로 이해하는 것은 크게 어렵지 않아요.
하지만 실제 프로그래밍에서 원하는 문제를 해결하기 위해 어떻게 제어문을 표현해야 할 지 판단하는 것은 쉽지 않아요.
여러분께서는 다양한 연습을 통해 경험적 노하우를 키우세요.

◈ 기본 연습 (정답 바로가기)
1. 두 개의 정수를 입력받은 후에 큰 수를 출력하는 프로그램을 작성하시오.

2. 0~100 사이의 정수를 입력받은 후에 90~100일 때 A, 80~89일 때 B, 70~79일 때 C,
60~69일 때 D, 50~59일 때 F, 그 외에는 NA를 출력하는 프로그램을 작성하시오.

3. 두 개의 정수를 입력받은 후에 작은 수가 큰 수의 약수인지 확인하는 프로그램을 작성하시오.

4. 세 개의 정수를 입력받은 후에 크기가 큰 순서부터 출력하는 프로그램을 작성하시오.