Below I have shared C++ program to find sum of digits of a number.

For example given number is 238 then sum of digits will be 13.

I am using very simple logic. If we find mod of any number by 10 then the result is the last digit of the number. For example 123%10 is 3. In this way I am extracting digits one by one and adding to previous sum.

If a number is divided by 10 then result is the number with last digit removed. For example 123/10 is 12. In this way I am removing the digits one by one from end.

I have performed these operations inside while loop until number is not equal to 0.

## C++ Program to Find Sum of Digits of a Number

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include<iostream> using namespace std; int main() { unsigned long i,p,n,sum=0; cout<<"Enter any number:"; cin>>n; while(n!=0) { p=n%10; sum+=p; n=n/10; } cout<<endl<<"Sum of digits is:"<<sum; return 0; } |

**Output**

Enter any number:361

Sum of digits is:10

Thank you for this help but what is meaning of i and p. Need some more details on how to understand this layout and be able to explain it to somebody else.

Can you please provide explanation for the dry run of this program?

I have run this program and if I enter no. having more than 10 digits say 111111111111111 it is showing wrong result

Because it exceeds the range of long data type.

Sum of all digit the result is in single digit for example 3453 the result is 6 3+4+5+3=15 next 1+5=6 please develop code and send mail id thank you

I don’t get it

If I enter a number 723

Sum is supposed to be 12

But according to the programme I’m getting 5 as my answer

Plz help..

I have checked, it is giving correct answer for 723, the answer is 12. Don’t know why it is giving wrong in your case.