C언어를 학습할 때 가장 많이 시도하는 프로젝트 중 하나가 바로 간단한 계산기 프로그램입니다. 계산기는 입력, 조건문, 반복문, 연산자 활용 등 기초 문법을 모두 활용하기 때문에 초보자에게 훌륭한 연습 과제가 됩니다. 특히 덧셈, 뺄셈, 곱셈 같은 기본 연산을 구현하면서 입력 처리와 제어 구조를 이해할 수 있고, 이후 확장하여 나눗셈, 제곱, 루프 계산 등 다양한 기능을 추가할 수도 있습니다. 이번 글에서는 C언어로 간단한 계산기를 구현하는 방법을 덧셈, 뺄셈, 곱셈이라는 세 가지 연산을 중심으로 살펴보고, 코드와 함께 초보자가 주의할 점을 정리해 보겠습니다.
덧셈 기능 구현하기
덧셈은 계산기의 가장 기초적인 기능으로, 두 수를 입력받아 합을 출력하면 됩니다. 이 과정에서 핵심은 입력 함수 scanf와 출력 함수 printf를 제대로 이해하는 것입니다.
#include <stdio.h>
int main() {
int a, b;
printf("첫 번째 숫자를 입력하세요: ");
scanf("%d", &a);
printf("두 번째 숫자를 입력하세요: ");
scanf("%d", &b);
int sum = a + b;
printf("덧셈 결과: %d\n", sum);
return 0;
}
위 코드는 단순하지만, 중요한 개념을 담고 있습니다. scanf
에서 변수 앞에 &
를 붙여야 하는 이유는, 함수가 입력값을 저장할 변수의 메모리 주소를 알아야 하기 때문입니다. 초보자가 자주 하는 실수는 scanf("%d", a);
처럼 &
를 생략하는 것인데, 이는 프로그램이 잘못된 메모리에 접근하게 만들어 오류를 발생시킵니다.
덧셈 기능을 통해 사용자는 입력과 출력, 산술 연산자의 활용을 직접 경험할 수 있습니다. 또한 출력 메시지를 한글로 구성하면 사용자 친화적인 프로그램을 작성하는 습관도 기를 수 있습니다.
뺄셈 기능 구현하기
뺄셈은 덧셈과 원리는 동일하지만, 사용자 입력에 따라 결과가 음수가 될 수 있습니다. 이 과정에서 중요한 점은 산술 연산의 범위와 출력 형식입니다.
#include <stdio.h>
int main() {
int a, b;
printf("첫 번째 숫자를 입력하세요: ");
scanf("%d", &a);
printf("두 번째 숫자를 입력하세요: ");
scanf("%d", &b);
int diff = a - b;
printf("뺄셈 결과: %d\n", diff);
return 0;
}
뺄셈을 구현할 때 초보자가 자주 겪는 혼란은 입력 순서에 따라 결과가 달라진다는 점입니다. 예를 들어 10 - 5
는 5이지만, 입력 순서를 반대로 하면 5 - 10 = -5
가 됩니다. 따라서 사용자에게 프로그램 사용법을 명확히 안내하거나, 절댓값 연산을 추가해 항상 양수로 결과를 출력하도록 변경할 수도 있습니다.
또한 큰 수에서 작은 수를 빼거나 음수끼리 연산할 때도 프로그램이 정상적으로 동작하는지 확인해야 합니다. 단순히 연산이 아니라, 다양한 경우를 고려해 프로그램을 테스트하는 습관은 실제 소프트웨어 개발 과정에서 매우 중요합니다.
곱셈 기능 구현하기
곱셈은 산술 연산 중에서도 메모리와 범위에 주의해야 하는 기능입니다. 두 정수를 곱할 때, 결과가 int
범위를 넘어가면 오버플로우가 발생합니다. 따라서 단순한 예제에서는 int
를 쓰더라도, 더 큰 수를 처리할 경우 long long
같은 더 큰 자료형을 고려해야 합니다.
#include <stdio.h>
int main() {
int a, b;
printf("첫 번째 숫자를 입력하세요: ");
scanf("%d", &a);
printf("두 번째 숫자를 입력하세요: ");
scanf("%d", &b);
int product = a * b;
printf("곱셈 결과: %d\n", product);
return 0;
}
위 코드에서는 두 수를 곱한 결과를 출력합니다. 단순히 산술 연산자를 사용하면 되지만, 입력 값이 크면 오버플로우 문제가 생길 수 있다는 점을 기억해야 합니다. 예를 들어 50000 * 50000
은 25억이 되어 int
범위를 벗어나므로 잘못된 결과가 나옵니다. 따라서 계산기의 범위를 정하거나 자료형을 확장하는 것이 필요합니다.
또한 곱셈 기능은 단순 산술 연산 외에도 반복적인 덧셈과 연결된다는 점에서 알고리즘 학습에 도움을 줍니다. 예를 들어, 5 * 3
은 5 + 5 + 5
와 같다는 점을 이해하면 반복문과 결합해 곱셈을 구현할 수도 있습니다.
결론: C언어 계산기를 통한 기초 다지기
덧셈, 뺄셈, 곱셈이라는 세 가지 기능만으로도 간단한 계산기를 만들 수 있습니다. 이 과정에서 초보자는 입력과 출력, 변수와 자료형, 산술 연산자, 조건문과 같은 핵심 문법을 모두 경험하게 됩니다. 더 나아가 switch문
을 활용하면 여러 연산을 하나의 프로그램 안에서 선택할 수 있고, 반복문을 추가해 사용자가 원할 때까지 계산을 계속할 수도 있습니다. 또한 나눗셈, 나머지 연산, 제곱 연산 등으로 확장하면서 점점 더 복잡한 프로그램으로 발전시킬 수 있습니다.
계산기 예제는 단순히 결과를 출력하는 것을 넘어서, 사용자 입력 처리, 에러 처리, 연산자 이해, 자료형 선택 등 프로그래밍의 기초를 종합적으로 훈련할 수 있는 훌륭한 연습입니다. 따라서 초보자는 이 과제를 단순히 따라 치는 데서 그치지 말고, 입력 범위를 바꿔 보거나 조건문을 추가하는 식으로 변형해 보면서 스스로 응용력을 키워야 합니다. 그렇게 하면 C언어의 기본기를 튼튼히 다지고, 더 복잡한 프로젝트를 진행할 준비가 될 수 있습니다.