In this article we will show you, how to calculate the sum of digits of a number using For Loop, While Loop, Functions and Recursion

## C Program to Find Sum of Digits of a Number using While Loop

This program allows the user to enter any positive integer and then it will divide the given number into individual digits and adding those individual (Sum) digits using While Loop in C.

**CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/* C Program to Find Sum of Digits of a Number using While Loop */ #include <stdio.h> int main() { int Number, Reminder, Sum=0; printf("\n Please Enter any number\n"); scanf("%d", &Number); while(Number > 0) { Reminder = Number % 10; Sum = Sum+ Reminder; Number = Number / 10; } printf("\n Sum of the digits of Given Number = %d", Sum); return 0; } |

**OUTPUT**

**ANALYSIS**

This program allows the user to enter any positive integer and then, that number is assigned to variable Number.

Next, Condition in the While loop will make sure that, the given number is greater than 0 (Means Positive integer and greater than 0)

User Entered value: Number = 4567 and Sum = 0

**First Iteration**

Reminder = Number %10

Reminder = 4567 % 10 = 7

Sum = Sum+ Reminder

Sum = 0 + 7

Sum = 7

Number = Number / 10

Number = 4567 / 10

Number = 456

**Second Iteration**

From the first Iteration the values of both Number and Sum has been changed as:

Number = 456 and Sum = 7

** **

Reminder = Number %10

Reminder = 456 % 10 = 6

Sum = Sum+ Reminder

Sum = 7 + 6

Sum = 13

Number = Number / 10

Number = 456 / 10

Number = 45

**Third Iteration**

From the Third Iteration the values of both Number and Sum has been changed as:

Number = 45 and Sum = 13

Reminder = Number %10

Reminder = 45 % 10 = 5

Sum = Sum+ Reminder

Sum = 13 + 5

Sum = 18

Number = Number / 10

Number = 45 / 10

Number = 4

**Fourth Iteration**

From the Fourth Iteration the values of both Number and Sum has been changed as:

Number = 4 and Sum = 18

** **

Reminder = Number %10

Reminder = 4 % 10 = 4

Sum = Sum+ Reminder

Sum = 18 + 4

Sum = 22

Number = Number / 10

Number = 4 / 10

Number = 0

**Here **Number = 0 so, the while loop condition will fail

Last printf statement will print the Sum variable as output. So, the output of given variable 4567 is:

## C Program to Find Sum of Digits of a Number using For Loop

This program allows the user to enter any positive integer and then it will divide the given number into individual digits and adding those individual (Sum) digits using For Loop in C Programming.

**CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* C Program to Find Sum of Digits of a Number using For Loop */ #include <stdio.h> int main() { int Number, Reminder, Sum; printf("\nPlease Enter any number\n"); scanf("%d", &Number); for (Sum=0; Number > 0;Number=Number/10) { Reminder = Number % 10; Sum=Sum+ Reminder; } printf("\n Sum of the digits of Given Number = %d", Sum); return 0; } |

We just replaced the While loop in the above example with the For loop. If you don’t understand the for loop then please refer For Loop article here: For Loop in C Programming

**OUTPUT:**

## C Program to Find Sum of Digits of a Number Using Functions

This program allows the user to enter any positive integer and then it will divide the given number into individual digits and adding those individual (Sum) digits using Functions in C.

**CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/* C Program to Find Sum of Digits of a Number Using Functions */ #include <stdio.h> int Sum_Of_Digits (int); int main() { int Number, Sum = 0; printf("\n Please Enter any number\n"); scanf("%d", &Number); Sum = Sum_Of_Digits (Number); printf("\n Sum of the digits of Given Number = %d", Sum); return 0; } int Sum_Of_Digits (int Number) { int Reminder, Sum; for (Sum=0; Number > 0;Number=Number/10) { Reminder = Number % 10; Sum=Sum+ Reminder; } return Sum; } |

**OUTPUT:**

**ANALYSIS:**

When the compiler reaches to Sum_Of_Digits (Number) line in main() program then the compiler will immediately jump to below function:

int Sum_Of_Digits (int Number)

We already explained LOGIC above example. Please refer C Program to Find Sum of the Digits of a Given Number using While Loop Analysis section.

Last line ends with return Sum statement.

**NOTE: **If we create a function with Void then there is no need to return any value but, if we declared a function with any data type (int, float etc) then we have return something out from the function.

## C Program to Find Sum of Digits of a Number using Recursion

This program allows the user to enter any positive integer and then it will divide the given number into individual digits and adding those individual (Sum) digits by calling the function recursively. Please refer Recursion in C for further reference

**CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/* C Program to Find Sum of Digits of a Number using Recursion */ #include <stdio.h> int Sum_Of_Digits (int); int main() { int Number, Sum = 0; printf("\nPlease Enter any number\n"); scanf("%d", &Number); Sum = Sum_Of_Digits (Number); printf("\nSum of the digits of Given Number = %d", Sum); return 0; } int Sum_Of_Digits (int Number) { static int Reminder, Sum=0; if(Number > 0) { Reminder = Number % 10; Sum=Sum+ Reminder; Sum_Of_Digits (Number / 10); return Sum; } else return 0; } |

**OUTPUT**

**ANALYSIS**

When the compiler reaches to Sum_Of_Digits (Number) line in main() program then the compiler will immediately jump to below function:

int Sum_Of_Digits (int Number)

In this function,

Static variable will initialize the value only when the function called first time.

Sum_Of_Digits (Number / 10) statement will help to call the function Recursively with updated value. If you miss this statement then, after completing the first line it will terminate. For example,

Number = 4567

Then the output will be 7

Lets see the If condition

if (Number > 0) will check whether the number is greater than 0 or not. For Recursive functions it is very important to place a condition before using the function recursively otherwise, we will end up in infinite execution (Same like infinite Loop).

Please be careful 🙂

Thank you for Visiting Our Blog

## Leave a Reply