C Program to Sum the Digits of Any Given Number


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!

       

Advertisements

ads