Language/C

혼공C : 선택문, 계산기 프로그램

짱도르딘 2024. 6. 17. 19:37
728x90

이번에는 혼공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 ' 를 사용하여 구분하였다.

728x90