# C Program to Find Sum of Digits of a Number

How to write a C Program to Find 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. To find the result, this C program will divide the given number into individual digits and add those individual (Sum) digits 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 C program to find the sum of digits allows you to enter any positive integer, and then that number is assigned to a 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 have changed as Number = 456 and Sum= 7

Reminder= 456 % 10 = 6

Sum= 7 + 6 => 13

Number= 456 / 10 => 45

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

Reminder= 45 % 10 = 5

Sum= 13 + 5 = 18

Number= 45 / 10 = 4

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

Reminder = 4 % 10 = 4

Sum= 18 + 4 = 22

Number= 4 / 10 = 0

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

The last Programming printf statement will print the addition of the total digits 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 allows the user to enter any positive integer. Next, it will divide the given value into individual digits. By adding those single digits, this C program finds the sum of the digits of a number using For Loop.

```#include <stdio.h>

int main()
{
int Num, Reminder, Sm;

scanf("%d", &Num);

for (Sm=0; Num > 0;Num=Num/10)
{
Reminder = Num % 10;
Sm=Sm+ Reminder;
}

printf("\n Sum of the digits = %d", Sm);
return 0;
}```

We just replaced the While loop in the above digits example with the For Loop.

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

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

```#include <stdio.h>

int SmOfDig (int);

int main()
{
int Num, Sm = 0;

scanf("%d", &Num);

Sm = SmOfDig (Num);

printf("\n Sum of the digits = %d", Sm);
return 0;
}

int SmOfDig (int Num)
{
int Reminder, Sm;

for (Sm=0; Num > 0;Num=Num/10)
{
Reminder = Num % 10;
Sm=Sm+ Reminder;
}

return Sm;
}```

In this sum of digits in a number example, when the compiler reaches the SmOfDig(Num) line in the main() program, the compiler will immediately jump to the below function:

int SmOfDig(int Num)

We have already explained the LOGIC above example. Please refer to the While Loop Analysis section.

The last line ends with a return output.

NOTE: If we create a function with Void, there is no need to return any value. But, if we declare a function with any data type (int, float, etc.), we have to return something 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. Next, it divides the number into individual digits and adds those digits (Sum of digits) by calling the C function recursively. Please refer to the Recursion for further reference

```#include <stdio.h>

int SmODit (int);

int main()
{
int n, tot = 0;

scanf("%d", &n);

tot = SmODit (n);

printf("\nSum of the digits  = %d", tot);
return 0;
}

int SmODit (int n)
{
static int Reminder, tot=0;

if(n > 0)
{
Reminder = n % 10;
tot = tot + Reminder;
SmODit (n / 10);
}
else
return 0;
}```

In this example, When the compiler reaches the SmODit(n) line in the main() program, the compiler will immediately jump to the below function:

int SmODit(int n)

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

SmODit(n / 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, it will terminate after completing the first line.

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

Let’s see the If condition,

if (n > 0) will check whether it 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 as Infinite Loop).