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

C 언어로 단 하나의 문장만 사용해 숫자의 자릿수 합을 구하는 프로그램

이 글에서는 여러 개의 문장을 작성하지 않고도 숫자의 자릿수 합을 구하는 방법을 알아봅니다. 다시 말해, 단 하나의 문장만으로 자릿수의 합을 계산하는 것이 목표입니다.

자릿수의 합을 구하는 기본 원리는 다음과 같습니다. 숫자를 10으로 나눈 나머지를 이용해 마지막 자릿수를 추출하고, 그다음 숫자를 다시 10으로 나누는 과정을 반복하여 숫자가 0이 될 때까지 진행하면 전체 자릿수의 합을 얻을 수 있습니다.

이러한 작업을 단일 문장으로 처리하려면 for 루프를 활용할 수 있습니다. for 루프는 세 개의 영역으로 구성되어 있는데, 이 예제에서는 초기화 영역에서는 아무 작업도 수행하지 않고, 조건 검사 영역에서는 숫자가 0보다 큰지 여부를 확인합니다. 그리고 증감 영역에서 두 가지 작업을 동시에 처리합니다. 먼저 숫자의 마지막 자릿수를 합계에 더하고, 동시에 숫자를 10으로 나누어 값을 줄여 나갑니다.

예제 코드

#include<stdio.h>
main() {
   int n, sum = 0;
   printf("Enter a number: "); //사용자로부터 숫자 입력받기
   scanf("%d", &n);
   for(; n > 0; sum += n%10, n/= 10) {
   }
   printf("The sum of digits: %d", sum);
}

실행 결과

Enter a number: 457
The sum of digits: 16

위 코드에서 핵심은 for 루프의 증감 부분에 쉼표 연산자(,)를 사용하여 sum += n%10n /= 10이라는 두 연산을 한 번에 수행한다는 점입니다. 이렇게 하면 별도의 루프 본문 없이 조건식과 증감식만으로 자릿수 합산 로직을 완성할 수 있어 코드가 매우 간결해집니다.