Sum of Digits in C Programming

Program to calculate sum of digits in C of a number using loop, explained logic and test cases.

Example,

Input number: 123
Output = 1+2+3 =6

Logic to find sum of digits:

  • Have two variables” sum” and “remainder” with initial value 0.
  • loop through the number
  • Get remainder of the number with modulus 10. e.g. 123 % 10 =3(last digit) and store in remainder.
  • add value of variable “sum” and remainder e.g. 0+3
  • Remove the last digit as it is processed and get the number again by dividing 10. e.g. 123/10 =12.
  • process the number 12 again in the loop and so on until value of input number becomes 0
  • loop end
  • sum variable will contain final result.

Program to calculate sum of digits in C

/*Example program to find sum of digits in C*/
#include <stdio.h>

int sumOfDigits(int number){

	//initialize values with 0
	int sum = 0;
	int remainder = 0;

	//Run the loop until value of number is 0
	while (number != 0) {
		//calculate remainder using % operator
		//lets say number is 123, so, remainder will be
		// 123 % 10 = 3
		remainder = number % 10;

		//add value of earlier sum+ remainder
		//e.g. 0+ 3
		sum = sum + remainder;

		//get remaing number i.e. 123/10 =12
		number = number / 10;

		//continue the number in loop until
		//value of number becomes 0.
		//once it is 0, sum variable will
		//have the summation result.

	}//loop end

	//return the sum
	return sum;
}

//Test program
int main()
{	
	int sum =0;
	int number = 0;

	printf("Enter a number:");
	scanf("%d",&number);

	sum = sumOfDigits(number);

	printf("Sum = %d ", sum);


	return 0;
}

Test Cases

Input:12345
Output = 15

Input: -12345
Output = -15

Input: 0
Output = 0

NOTES:

Within the while loop in C program above, the remainder statement can be eliminated as below.

while (number != 0) {

sum+=number%10;
number=number/10;
}

Related Posts