Sum of digits in C

Created with Sketch.

 

Sum of digits in C

C program to calculate the sum of digits of a number: we will use modulus operator (%) to extract individual digits of a number and keep on adding them.

Sum of digits of a number in C

#include <stdio.h>

int main()
{
int n, t, sum = 0, remainder;

printf(“Enter an integer\n);
scanf(“%d”, &n);

t = n;

while (t != 0)
{
remainder = t % 10;
sum       = sum + remainder;
t         = t / 10;
}

printf(“Sum of digits of %d = %d\n, n, sum);

return 0;
}

If you wish you can modify the input variable (n) and without using an additional variable (t) but it isn’t recommended.

Output of program:
Sum of digits C program output

For example, if the input is 98, the variable sum is 0 initially
98%10 = 8 (% is modulus operator which gives us remainder when 98 is divided by 10).
sum = sum + remainder
so sum = 8 now.
98/10 = 9 because in C language whenever we divide an integer by an another integer we get an integer.
9%10 = 9
sum = 8 (previous value) + 9
sum = 17
9/10 = 0.
So finally n = 0, the loop ends we get the required sum.

 

Calculate sum of digits in C without modulus operator

C program to find the sum of digit(s) of an integer that does not use modulus operator. Our program uses a character array (string) for storing an integer. We convert every character of the string into an integer and add all these integers.

#include <stdio.h>

int main()
{
int c, sum, t;
char n[1000];

printf(“Input an integer\n);
scanf(“%s”, n);

sum = c = 0;

while (n[c] != \0) {
t   = n[c] ‘0’; // Converting character to integer
sum = sum + t;
c++;
}

printf(“Sum of digits of %s = %d\n, n, sum);

return 0;
}

An advantage of this method is that the input integer can be very large which can’t be stored in an int or a long long variable, see an example below.

Output of program:

Input an integer
123456789123456789123456789
Sum of digits of 123456789123456789123456789 = 135

Sum of digits of a number C program using recursion

#include <stdio.h>

int add_digits(int);

int main()
{
int n, result;

scanf(“%d”, &n);

result = add_digits(n);

printf(“%d\n, result);

return 0;
}

int add_digits(int n) {
static int sum = 0;

if (n == 0) {
return 0;
}

sum = n%10 + add_digits(n/10);

return sum;
}

The static variable sum is used and initialized to 0; its value will persist after function calls, i.e., it is initialized once when the function is called for the first time.

Leave a Reply

Your email address will not be published. Required fields are marked *