이번에는 혼공C 5장 선택문의 도전 실전 예제인 계산기 프로그램을 구현해보려 한다.
선택문
C언어에서의 선택문은 조건에 따라 실행 문장을 선택해야 할 때 주로 사용된다.
선택문은 대표적으로 if문, if else문 그리고 else문으로 나뉜다. 조금 더 자세하게 들어가면 switch case문으로도 구성된다.
if 문
if문의 기본 형식에 대해서 알아보자면 if문은 조건식과 실행문으로 구성이 된다.
간단한 작성 예제를 구현해 보자면 아래와 구현될 수 있다.
if(a < 100)
{
b = a;
}
여기서 'a < 100'은 조건식, 'b = a'는 실행문이며, 풀어서 설명하면 a가 100보다 작다면 b에 a를 대입하고 싶다는 것이다.
그렇다면 위와 같은 fi문처럼 조건이 존재할 때, 조건을 충족하지 못한 경우에 수행되는 실행문을 작성하려면 어떻게 해야 할까? 그런 경우에는 if ~ else문을 사용하면 된다.
if ~ else 문
if ~ else 문을 사용하여 간단한 예제를 만들어보면 아래와 같다.
if (a >= 10)
{
a = 1;
}
else
{
a = -1;
}
위 코드는 a가 10 이상일 경우 a에 1을 대입하고, 그 외의 경우라면 a에 -1을 대입한다는 것이다.
조건을 충족하는 경우와 충족하지 못하는 경우 두 가지 경우를 모두 제어하고 싶다면 if문보다 if else문을 사용하는 것이 더 효율적일 수 있다.
정리하자면, if문은 1가지의 선택을 고민할 때 사용, if ~ else 문은 2가지 중 하나를 고를 때 사용, if ~ else if ~ else문은 3가지 이상에서 하나를 고를 때 사용하는 것이 효율적이다.
그렇다면 맨 위에 언급 된 switch ~ case문은 언제 사용되는 것일까?
switch ~ case문은 선행조건이 꼭 필요하며 중첩된 if문을 사용할 때 더욱 편리하게 사용하고 싶은 경우에 사용된다.
switch ~ case문의 일반적인 형식은 아래와 같다.
switch ( 조건식 )
{
case 상수식1 :
실행문1;
break;
case 상수식2 :
실행문2;
break;
default:
실행문3;
break;
}
도전 실전 예제
주어진 문제는 다음과 같다.
"키보드로 수식을 입력하면 계산 결과를 출력하는 프로그램을 작성해라. 정수 사칙연산만 가능하다."
계산기 동작을 구현할 코드는 아래와 같다.
#include <stdio.h>
int main(void)
{
int a, b, res;
char cir;
printf("사칙연산 입력(정수) : ");
scanf("%d %c %d", &a, &cir, &b);
switch (cir)
{
case '+':
res = a + b;
printf("%d %c %d = %d\n", a, cir, b, res);
break;
case '-':
res = a - b;
printf("%d %c %d = %d\n", a, cir, b, res);
break;
case '*':
res = a * b;
printf("%d %c %d = %d\n", a, cir, b, res);
break;
case '/':
res = a / b;
printf("%d %c %d = %d\n", a, cir, b, res);
break;
}
return 0;
}
가장 먼저 두개의 정수를 입력 받을 a, b 변수를 선언하였고, 정수로 된 결과값을 출력할 변수 res를 선언하였다.
사칙연산의 경우는 네가지 경우가 존재하므로 switch ~ case 문을 활용하였고, 연산기호는 ' char ' 를 사용하여 구분하였다.
'Language > C' 카테고리의 다른 글
혼공C : 배열, 대소문자 변환 프로그램 (2) | 2024.06.20 |
---|---|
혼공C : 함수, 도전 실전 예제 (0) | 2024.06.20 |
혼공C : 반복문, 소수 출력 프로그램 (2) | 2024.06.17 |
혼공C : 연산자, 체중관리 프로그램 (0) | 2024.06.16 |