Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 나누기·모듈로 연산자로 숫자의 첫 자리와 마지막 자리 합 구하기

문제

키보드로 네 자리 숫자를 입력받았을 때, 그 숫자의 첫 번째 자리와 마지막 자리 숫자의 합을 구하는 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의 거듭제곱)만 조정하면 동일한 로직을 그대로 재사용할 수 있다는 점이 이 기법의 가장 큰 장점입니다.