{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 제어문: if-else\n", "\n", "제어문은 비교 기준이 참이냐 거짓이냐에 따라 선택적으로 명령을 실행하는 문장입니다.\n", "\n", "주의 해야 할 것은 제어문 내에 문장이 하나 이상일 때는 중괄호로 묶어야 합니다. \n", "\n", "다음은 다양한 `if-else` 예제들입니다. 실행하기 전에 어떻게 동작하는지 살펴봅시다. 그리고 실제 결과가 예측과 같은지 비교해봅시다.\n", "\n", "\n", "## if 문 예제" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "\n", "int main()\n", "{\n", " int num1 = 2, num2;\n", " // printf(\"enter a number: \");\n", " // scanf(\"%d\", &num2);\n", " num2 = 5;\n", " \n", " if (num1 == num2)\n", " printf(\"same value\\n\");\n", " if (num1 > 4)\n", " printf(\"enter value smaller than 4\");\n", "\n", " return 0;\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## if - else 예제" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "\n", "int main()\n", "{\n", " int num1;\n", " // printf(\"enter a number: \");\n", " // scanf(\"%d\", &num1);\n", " num1 = 23;\n", " \n", " if(num1 % 5 == 0)\n", " printf(\"it is multiples of 5\\n\");\n", " else\n", " printf(\"not multiples of 5\\n\");\n", " return 0;\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## if - else if - else 예제" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "\n", "int main()\n", "{\n", " int kor, math, eng;\n", " float avg;\n", " \n", " kor = 100;\n", " math = 100;\n", " eng = 100;\n", " \n", " avg = (float)(kor + math + eng)/3;\n", " if (avg >= 90)\n", " printf(\"average %.1f, grade: A\\n\", avg);\n", " else if(avg >= 80)\n", " printf(\"average %.1f, grade: B\\n\", avg);\n", " else if(avg >= 70)\n", " printf(\"average %.1f, grade: C\\n\", avg);\n", " else if(avg >= 60)\n", " printf(\"average %.1f, grade: D\\n\", avg);\n", " else \n", " printf(\"average %.1f, grade: F\\n\", avg);\n", " \n", " return 0;\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 중첩 if - else 예제" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "\n", "int main()\n", "{\n", " int math, eng;\n", " float avg;\n", " \n", " math = 100;\n", " eng = 100;\n", " \n", " if (math >= 60)\n", " if (eng >= 60)\n", " printf(\"Pass\\n\");\n", " else\n", " printf(\"Fail\\n\");\n", " else \n", " printf(\"Fail\\n\");\n", " \n", " return 0;\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 문제\n", "다음 코드는 오류가 있다. 컴파일이 제대로 되지않는다. 코드를 수정하여 의도한 데로 출력해보자. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "\n", "int main()\n", "{\n", " int math, eng;\n", " float avg;\n", " \n", " math = 100;\n", " eng = 100;\n", " \n", " if (math >= 60)\n", " if (eng >= 60)\n", " printf(\"Pass\\n\");\n", " printf(\"Well done\\n\");\n", " else\n", " printf(\"Fail\\n\");\n", " else \n", " printf(\"Fail\\n\");\n", " \n", " return 0;\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 문제\n", "\n", "다음의 코드는 의도한 데로 동작하지 않는다. 코드를 수정하여 의도한데로 동작하도록 만들어 보자." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "int main() {\n", " int x = 10;\n", " int y = 5;\n", " int result;\n", "\n", " if (y != 0)\n", " if (x != 0)\n", " result = x / y;\n", " else\n", " printf(\"Error: y is equal to 0\\n\");\n", "\n", " return 0;\n", "}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 문제\n", "\n", "다음의 조건부 표현식으로 작성된 코드이다. 이 코드를 `if-else`문으로 변경해보자. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "int main() {\n", " int i, j, k;\n", " i = 1;\n", " j = 2;\n", "\n", " k = i > j ? i : j; /* k is now 2 */\n", " printf(\"%d\\n\", k);\n", "\n", " k = (i >= 0 ? i : 0) + j; /* k is now 3 */\n", " printf(\"%d\\n\", k);\n", "\n", " return 0;\n", "}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "int main() {\n", " int i, j, k;\n", " i = 1;\n", " j = 2;\n", "\n", " // your code here\n", " printf(\"%d\\n\", k);\n", "\n", " // your code here\n", " printf(\"%d\\n\", k);\n", "\n", " return 0;\n", "}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 문제\n", "\n", "어떤 중개사의 수임료가 다음과 같이 책정되어 있다고 하자. \n", "\n", "| 거래 금액 | 수임료 |\n", "|:-------------:|:---------------:|\n", "| \\$2,500 이하 | \\$30 + 1.7% | \n", "| \\$2,500–\\6,250 | \\$56 + 0.66% | \n", "| \\$6,250–\\20,000 | \\$76 + 0.34% | \n", "| \\$20,000–\\50,000 | \\$100 + 0.22% | \n", "| \\$50,000–\\500,000 | \\$155 + 0.11% | \n", "| \\$500,000이상 | \\$255 + 0.09% | \n", "\n", "최소 수임률은 \\$39 이다. \n", "\n", "사용자가 거래 금액을 입력하면 수임료를 계산하는 프로그램을 작성해보자. `if - else`문으로 서로 다른 구간의 수입료를 계산하는 프로그램을 작성해보자.\n", "\n", "아래는 기본 골격이다." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "/* Calculates a broker's commission */\n", " \n", "#include \n", " \n", "int main(void)\n", "{\n", " __타입__ commission, value;\n", " \n", " printf(\"Enter value of trade: \");\n", " scanf(\"%f\", &value);\n", "  \n", " // your code here\n", " \n", " return 0;\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 문제 \n", "\n", "다음 코드의 실행 결과를 예측해보자. 그리고 확인해보자" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#include \n", "\n", "int main() {\n", " int i = 1;\n", "\n", " if (i == 0)\n", " printf(\"check this\\n\");\n", "\n", " if ((i = 0))\n", " printf(\"print this line\\n\");\n", "\n", " return 0;\n", "}" ] } ], "metadata": { "kernelspec": { "display_name": "C", "language": "c", "name": "c" }, "language_info": { "file_extension": ".c", "mimetype": "text/plain", "name": "c" } }, "nbformat": 4, "nbformat_minor": 2 }