The program segment given below determines the sum of digits of a given number repeatedly until a single digit number is obtained. For example, 5985 => 27 => 9, where symbol => indicates a digit sum operation. Thus, if digit sum exceeds 9, it is used as a number for subsequent digit sum operations.
This code uses a two-level nested do ... while loop. The inner do ... while loop is used to determine the sum of digits of number num. After the sum of digits is calculated in the inner do ... while loop, it is assigned to num as a new number. The outer do ... while loop determines the sum of digits repeatedly as long as num is greater than 9.
printf("Enter a Number :");
sum = 0; /* sum of digits of number */
sum += num % 10; /* add LS digit to sum */
num /= 10; /* remove LS digit from num */
} while (num > 0);
num = sum; /* use digit sum as new number */
} while (num > 9); /* as long as num has 2 or more digits */
printf("Sum of digits %d\n", sum);