I'm not sure your math background but you could check the number of digits with log(|number|). As far as solving your overall problem, I think the easiest(most straightforward) way would be to convert the numbers to a string and then add each character of the string to the total. You can do that or do some pure math with something like:
// this will add all the digits in number
int digit_sum = 0;
for (int i = 0; i <= (int)log(abs(number)); i++)
digit_sum += (int)(abs(number) / pow(10, i)) % 10;
this returns the number of digits in the number
This singles out the ith digit. For example, in the number 486, 6 is the 0th digit, 8 is the 1st digit, 4 is the 2nd digit.
(int)(abs(number) / pow(10, i)) % 10)) % 10