# C Program to Find Sum of Digits of a Number

How to write a C Program to Find 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 sum of digits in C program allows the user to enter any positive integer. Then c program will divide the given number into individual digits and adding those individuals (Sum) digits using While Loop

```/* C Program to Find Sum of Digits of a Number using While Loop */

#include <stdio.h>

int main()
{
int Number, Reminder, Sum=0;

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

This program for the sum of digits in c allows you to enter any positive integer, and then that number 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)

For the C Program to Find Sum of Digits demonstration, User Entered value: Number = 4567 and Sum = 0

First Iteration
Reminder = Number %10
Reminder = 4567 % 10 = 7

Sum = Sum+ Reminder
Sum = 0 + 7 => 7

Number = Number / 10
Number = 4567 / 10 => 456

Second Iteration
From the first Iteration of this C program, the values of both Number and Sum has changed as Number = 456 and Sum = 7

Reminder = Number %10
Reminder = 456 % 10 = 6

Sum = Sum+ Reminder
Sum = 7 + 6 => 13

Number = Number / 10
Number = 456 / 10 => 45

Third Iteration
From the Second Iteration of the sum of digits in c program, the values of both Number and Sum changed as Number = 45 and Sum = 13

Reminder = Number %10
Reminder = 45 % 10 = 5

Sum = Sum+ Reminder => 13 + 5
Sum = 18

Number = Number / 10 => 45 / 10
Number = 4

Fourth Iteration
From the Third Iteration,  Number and Sum changed as Number = 4 and Sum = 18

Reminder = Number %10
Reminder = 4 % 10 = 4

Sum = Sum+ Reminder => 18 + 4
Sum = 22

Number = Number / 10 => 4 / 10
Number = 0

Here, Number = 0. So, the while loop condition will fail

The last C Programming printf statement will print the Sum variable as the output. So, the output of the given variable 4567 is:

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

This program for the sum of digits in c allows the user to enter any positive integer. Next, it will divide the given number into individual digits. By adding those single digits, this c program find sum of digits of a number using For Loop

```/* C Program to Find Sum of Digits of a Number using For Loop */

#include <stdio.h>

int main()
{
int Number, Reminder, Sum;

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 sum of digits example with the For Loop.

C sum of Digits output

``````Please Enter any number
1234

Sum of the digits of Given Number = 10``````

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

This sum of digits in a number program divide the given number into individual digits and adds those digits using Functions

```/* 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;

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;
}```
`````` Please Enter any number
986

Sum of the digits of Given Number = 23``````

In this c program to find sum of digits in a number, when the compiler reaches to Sum_Of_Digits (Number) line in the main() program then the compiler will immediately jump to below function:

int Sum_Of_Digits (int Number)

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

The last line ends with a return Sum statement.

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

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

This program for the sum of digits allows the user to enter any positive integer. Next, it divides the number into individual digits and adding those digits (Sum of digits) by calling the function recursively. Please refer Recursion in C for further reference

```/* 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;

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;
}```
``````Please Enter any number
65

Sum of the digits of Given Number = 11``````

In this sum of digits in c example, When the compiler reaches to Sum_Of_Digits (Number) line in the main() program then the compiler will immediately jump to below function:

int Sum_Of_Digits (int Number)

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

Sum_Of_Digits (Number / 10) statement will help to call the function Recursively with the updated value. If you miss this statement in this C Program to Find Sum of Digits then, after completing the first line, it will terminate.

For example, Number = 4567 then the output will be 7

Let’s see the If condition,

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