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;
}
```