C언어 반복문과 조건문 if

    2018-02-06 14:00:23 작성

    조건문이란 주어진 조건에 따라 실행이 분기하여 다른 명령문을 실행하도록 하는 제어문 으로 if, switch문이 있습니다.

    if

    if (조건식) {
        조건식이 참일때 실행될 문장
    }

    조건이 참이면 중괄호 안의 내용이 실행 되고 거짓일 경우에는 실행하지 않습니다.
    다음의 코드는 사용자로 부터 숫자를 입력받아 양수, 음수 또는 0 인지에 대하여 조건문을 통해 출력하는 프로그램입니다.
    실행될 문장이 1줄인경우 중괄호 생략 가능합니다.

    #include <stdio.h>
    
    int main(void) {
        int a;
        printf("정수를 입력하세요 : ");
        scanf("%d", &a);
    
        if (a > 0) {
            printf("입력하신 숫자는 양수입니다.\n");
        }
        if (a < 0)
            printf("입력하신 숫자는 음수입니다.\n");
        if (a == 0)
            printf("입력하신 숫자는 0입니다.\n");
        return 0;
    }


    if else

    if (조건식) {
        조건식이 참일때 실행될 문장
    } else {
        조건식이 거짓일때 실행될 문장
    }

    if문도 중첩하여 작성할 수 있습니다.
    위의 코드를 다음과 같이 if else문으로 표현할 수 있습니다.

    #include <stdio.h>
    
    int main(void) {
        int a;
        printf("정수를 입력하세요 : ");
        scanf("%d", &a);
    
        if (a > 0) {
            printf("입력하신 숫자는 양수입니다.\n");
        } else {
            if (a < 0)
                printf("입력하신 숫자는 음수입니다.\n");
            else
                printf("입력하신 숫자는 0입니다.\n");
        }
        return 0;
    }


    if else if else

    if (조건식1) {
        조건식1이 참일때 실행될 문장
    } else if (조건식2) {
        조건식1이 거짓이고 조건2가 참일때 실행될 문장
    } else {
        위의 모든 조건식들이 거짓일때 실행될 문장
    }

    else if (조건) 은 몇개라도 올 수 있습니다.
    마지막 else는 필요하지 않다면 없을 수 있습니다.
    위의 코드를 다음과 같이 if else if else문으로 표현할 수 있습니다.

    #include <stdio.h>
    
    int main(void) {
        int a;
        printf("정수를 입력하세요 : ");
        scanf("%d", &a);
    
        if (a > 0) {
            printf("입력하신 숫자는 양수입니다.\n");
        } else if (a < 0) {
            printf("입력하신 숫자는 음수입니다.\n");
        } else {
            printf("입력하신 숫자는 0입니다.\n");
        }
        return 0;
    }


    조건연산자

    연산자에서 조건 연산자라는 것이 있습니다. 3항 연산으로 형태는 다음과 같습니다.

    조건식 ? 참일때 실행할 코드 : 거짓일때 실행할 코드

    이 형태를 보면 if else 문과 같다는 것을 알 수 있습니다.

    if (조건식) {
        조건식이 참일때 실행될 문장
    } else {
        조건식이 거짓일때 실행될 문장
    }

    간단한 if else 문은 조건연산자를 통해서 작성하실 수 있습니다.
    위의 코드를 조건 연산자로 만들어 보면 다음과 같습니다.

    #include <stdio.h>
    
    int main(void) {
        int a;
        printf("정수를 입력하세요 : ");
        scanf("%d", &a);
    
        a > 0 ? printf("입력하신 숫자는 양수입니다.\n") : a < 0 ? printf("입력하신 숫자는 음수입니다.\n") : printf("입력하신 숫자는 0입니다.\n");
        return 0;
    }


    조건연산자도 중첩되어 작성할 수 있습니다.
    조건연산자는 기호로 되어있다보니 복잡한 코드에서는 가독성은 좋지 않습니다.



    연습문제

    1. 사용자로부터 사칙연산 중 하나를 선택하고 두개의 실수를 입력받아 결과를 출력하는 프로그램을 작성하세요.
    단, 나누기의 경우 0이면 0으로 나눌수 없다는 출력을 하고 종료.



    2. 사용자로 부터 하나의 정수를 입력받아 그 수의 절대값을 출력하는 프로그램작성
    음수를 입력받을 경우 양수로 출력하고 양수의 경우 그냥 출력해주면 됩니다.
    단, 조건연산자로 작성하세요.


    3. 두개의 정수를 받아서 두수의 차를 출력하는 프로그램 작성
    단, 입력된 수의 순서와 관계 없이 무조건 큰수에서 작은수를 뺀 결과를 출력하세요.
    if 문으로 해결하였다면 조건연산자로도 해보세요.


    4. 1부터 100까지의 2와 3의 공배수를 구하는 프로그램 작성
    공배수란. 두 수의 배수 중에서 공통으로 들어 있는 배수
    예를 들어 다음과 같이 2와 3의 배수중 공통으로 있는 6, 12 등이 공배수 입니다.
    2의 배수 : 2, 4, 6, 8, 10, 12 ...
    3의 배수 : 3, 6 ,9, 12 ...
    1부터 100까지의 수이기 때문에 반복문과 조건문을 같이 사용해야 합니다.