문제
키보드로 네 자리 숫자를 입력받았을 때, 그 숫자의 첫 번째 자리와 마지막 자리 숫자의 합을 구하는 C 프로그램은 어떻게 작성할 수 있을까요?
해결 방법
이 프로그램에서는 실행 시점에 사용자로부터 네 자리 숫자를 입력받고, 나누기(/)와 모듈로(%) 연산자를 활용하여 첫 자리와 마지막 자리 숫자의 합을 계산합니다. 핵심 로직은 다음과 같습니다.
a = n % 10; // 10으로 나눈 나머지 → 마지막 자리 숫자 b = n / 1000; // 1000으로 나눈 몫 → 첫 번째 자리 숫자 result = a + b; // 두 자릿수의 합
로직 설명
모듈로 연산자(%)는 나눗셈의 나머지를 반환하므로, 어떤 수를 10으로 나눈 나머지는 항상 그 수의 마지막 자리가 됩니다. 반면 정수형 나누기 연산자(/)는 몫만 반환하므로, 네 자리 숫자를 1000으로 나누면 첫 번째 자리 숫자만 남게 됩니다.
예제 코드
다음은 나누기와 모듈로 연산자를 사용하여 네 자리 숫자의 첫 자리와 마지막 자리의 합을 구하는 C 프로그램입니다.
#include<stdio.h>
main(){
int n,a,b,result;
printf("Enter a four digit number: ");
scanf("%d",&n);
a=n%10;
b=n/1000;
result = a + b;
printf("After adding first and last digit is %d", result);
getch();
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과를 확인할 수 있습니다.
Enter a four digit number: 2345 After adding first and last digit is 7
입력값이 2345인 경우, 마지막 자리는 2345 % 10 = 5, 첫 번째 자리는 2345 / 1000 = 2이므로 최종 결과는 5 + 2 = 7이 됩니다.
여섯 자리 숫자로 확장하기
같은 원리는 여섯 자리 숫자에도 그대로 적용할 수 있습니다. 차이점은 첫 번째 자리를 구할 때 나누는 수를 100000으로 바꾸는 것뿐입니다.
#include<stdio.h>
main(){
int n,a,b,result;
printf("Enter a six digit number: ");
scanf("%d",&n);
a=n%10;
b=n/100000;
result = a + b;
printf("After adding first and last digit is %d", result);
getch();
}실행 결과
Enter a six digit number: 346713 After adding first and last digit is 6
346713의 경우 마지막 자리는 346713 % 10 = 3, 첫 번째 자리는 346713 / 100000 = 3이므로 3 + 3 = 6이 출력됩니다.
마무리
이처럼 나누기와 모듈로 연산자만 활용하면 문자열 변환 같은 별도의 처리 없이도 숫자의 특정 자릿수를 손쉽게 추출할 수 있습니다. 자릿수가 늘어나더라도 나누는 수(10의 거듭제곱)만 조정하면 동일한 로직을 그대로 재사용할 수 있다는 점이 이 기법의 가장 큰 장점입니다.