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

C 언어로 5자리 숫자의 자릿수 합 구하기

5자리 숫자 num이 주어졌을 때, 각 자릿수의 합을 구하는 방법을 알아보겠습니다. 핵심 아이디어는 숫자를 오른쪽에서 왼쪽으로 한 자리씩 추출하는 것입니다.

숫자를 10으로 나누면 나머지(% 연산)가 가장 오른쪽 자릿수가 되고, 몫(/ 연산)은 나머지 앞부분의 숫자가 됩니다. 따라서 나머지를 합에 더한 뒤, 숫자를 몫으로 갱신하는 과정을 반복하면 숫자가 결국 0이 되고, 그동안 더해진 값이 곧 전체 자릿수의 합입니다.

알고리즘 접근 방식

예를 들어 입력이 num = 58612라면, 출력은 22가 됩니다. 5 + 8 + 6 + 1 + 2 = 22이기 때문입니다.

문제를 해결하기 위해 다음 단계를 따릅니다.

  • num을 58612로 초기화합니다.
  • sum을 0으로 초기화합니다.
  • num이 0이 아닌 동안 다음을 반복합니다.
    • sum에 num을 10으로 나눈 나머지(num mod 10)를 더합니다.
    • num을 10으로 나눈 몫(정수 부분)으로 갱신합니다.
  • 반복이 끝나면 sum을 반환합니다.

예제 코드

아래 구현을 통해 동작 원리를 더 잘 이해할 수 있습니다.

#include <stdio.h>
int main(){
    int num = 58612;
    int sum = 0;

    while(num != 0){
        sum += num % 10;
        num = num / 10;
    }
    printf("Digit sum: %d", sum);
}

입력

58612

출력

Digit sum: 22

코드 설명

C 언어에서 정수형 변수에 / 연산을 적용하면 소수점 이하는 버려지므로, num / 10은 마지막 자릿수를 제거한 값을 반환합니다. 또한 %(모듈로) 연산자는 나눗셈의 나머지를 구하므로, num % 10은 항상 가장 오른쪽 자릿수를 추출합니다. 이 두 연산을 조합하면 별도의 문자열 변환 없이도 숫자의 각 자릿수를 손쉽게 분리하고 합산할 수 있습니다.