# C Program to Sum the Digits of Any Given Number

#### Cyber Security : Go from Zero to Hero

Most Popular

60 Lectures 5.5 hours

#### Master C and Embedded C Programming- Learn as you go

Best Seller

66 Lectures 5.5 hours

#### C Programming from scratch- Master C Programming

Best Seller

60 Lectures 8 hours

In the realm of programming, efficiency and accuracy are paramount. One fundamental task often encountered is summing the digits of a given number. This seemingly simple task can be approached in various ways, but harnessing the power of the C programming language can provide a robust solution. In this article, we will delve into the intricacies of crafting a C program to sum the digits of any given number, exploring the algorithm, implementation, and test cases to ensure its reliability.

### Algorithm:

The algorithm to sum the digits of a number involves iterating through each digit of the input number and accumulating their sum.

1. Accept the input number from the user.
2. Initialize a variable to store the sum of digits.
3. Iterate through each digit of the number using a loop.
4. Extract the last digit of the number using the modulo (%) operator.
5. Add the extracted digit to the sum variable.
6. Remove the last digit from the number using integer division (/).
7. Repeat steps 4-6 until all digits have been processed.
8. Display the sum of digits.

C Program Implementation :

#include <stdio.h>

// Function to calculate sum of digits
int sumDigits(int num) {
int sum = 0;
while (num != 0) {
sum += num % 10; // Extract the last digit and add to sum
num /= 10; // Remove the last digit
}
return sum;
}

int main() {
/* If you want to get input from users

int number;
printf("Enter a number: ");
scanf("%d", &number);
int sum = sumDigits(number);
printf("Sum of digits: %d\n", sum);

*/

// Test cases
printf("\nTest Cases:\n");
printf("1234 -> Expected: 10, Actual: %d\n", sumDigits(1234));
printf("987654321 -> Expected: 45, Actual: %d\n", sumDigits(987654321));
printf("505 -> Expected: 10, Actual: %d\n", sumDigits(505));
printf("0 -> Expected: 0, Actual: %d\n", sumDigits(0));

return 0;
}


### Test Cases:

Let's validate the functionality of our program with some test cases:

1. Input: 1234
Expected Output: Sum of digits: 10

2. Input : 987654321
Expected Output: Sum of digits: 45

3. Input: 505
Expected Output: Sum of digits: 10

4. Input: 0
Expected Output: Sum of digits: 0

By running these test cases, we can ensure that our C program accurately computes the sum of digits for various input scenarios.

We will also implement same code with different method

#### Method 1: Using Recursion

#include <stdio.h>

// Function to calculate sum of digits using recursion
int sumDigits(int num) {
if (num == 0)
return 0;
return (num % 10) + sumDigits(num / 10);
}

int main() {
/* If you want to get input from user

int number;
printf("Enter a number: ");
scanf("%d", &number);
int sum = sumDigits(number);
printf("Sum of digits: %d\n", sum);

*/

// Test cases
printf("\nTest Cases:\n");
printf("1234 -> Expected: 10, Actual: %d\n", sumDigits(1234));
printf("987654321 -> Expected: 45, Actual: %d\n", sumDigits(987654321));
printf("505 -> Expected: 10, Actual: %d\n", sumDigits(505));
printf("0 -> Expected: 0, Actual: %d\n", sumDigits(0));

return 0;
}

Method 2: Using a For Loop

#include <stdio.h>

// Function to calculate sum of digits using a for loop
int sumDigits(int num) {
int sum = 0;
for (; num != 0; num /= 10)
sum += num % 10;
return sum;
}

int main() {
/* If you want to get input from users

int number;
printf("Enter a number: ");
scanf("%d", &number);
int sum = sumDigits(number);
printf("Sum of digits: %d\n", sum);

*/

// Test cases
printf("\nTest Cases:\n");
printf("1234 -> Expected: 10, Actual: %d\n", sumDigits(1234));
printf("987654321 -> Expected: 45, Actual: %d\n", sumDigits(987654321));
printf("505 -> Expected: 10, Actual: %d\n", sumDigits(505));
printf("0 -> Expected: 0, Actual: %d\n", sumDigits(0));

return 0;
}


Method 3: Using a Do-While Loop

#include <stdio.h>

// Function to calculate sum of digits using a do-while loop
int sumDigits(int num) {
int sum = 0;
do {
sum += num % 10;
num /= 10;
} while (num != 0);
return sum;
}

int main() {
/* If you want to take input from users

int number;
printf("Enter a number: ");
scanf("%d", &number);
int sum = sumDigits(number);
printf("Sum of digits: %d\n", sum);

*/

// Test cases
printf("\nTest Cases:\n");
printf("1234 -> Expected: 10, Actual: %d\n", sumDigits(1234));
printf("987654321 -> Expected: 45, Actual: %d\n", sumDigits(987654321));
printf("505 -> Expected: 10, Actual: %d\n", sumDigits(505));
printf("0 -> Expected: 0, Actual: %d\n", sumDigits(0));

return 0;
}


In conclusion, mastering the art of summing digits in a given number showcases the elegance and efficiency of C programming. With a solid understanding of the algorithm and thorough testing, our program stands ready to handle any numerical challenge thrown its way. Happy coding!