Функция не имеет смысла.
int loopnum(int n)
{
n = n % 10;
n = n / 10;
return n;
}
Например, для n
, равного 27
, вы получите
n = n % 10;
, теперь n
равно 7
и затем
n = n / 10;
теперь n
равно 0
.
Так что для числа 27
функция возвращает 0
.
Более того, внутри цикла
while (loopnum(num) > 0) {
printf("d = %d", d);
printf(",sum = %d\n", sum);
}
не изменяется ни num
, ни d
, ни sum
.
Нет особого смысла определять такую функцию, за исключением того, что онамог бы сам выводить промежуточные суммы и цифры.
Без функции программа может выглядеть следующим образом.
#include <stdio.h>
int main(void)
{
while ( 1 )
{
const unsigned int Base = 10;
const unsigned int DIVISOR = 9;
printf( "Enter a non-negative number (0 - exit): " );
unsigned int n;
if ( scanf( "%u", &n ) != 1 || n == 0 ) break;
unsigned int sum = 0;
unsigned int tmp = n;
do
{
unsigned int digit = tmp % Base;
sum += digit;
printf( "d = %u, sum = %u\n", digit, sum );
} while ( tmp /= Base );
printf( "\nn = %u is %sdivisble by %u.\n\n",
n,
sum % DIVISOR == 0 ? "" : "not ", DIVISOR );
}
return 0;
}
Его выходная мощность может выглядеть как
Enter a non-negative number (0 - exit): 9
d = 9, sum = 9
n = 9 is divisble by 9.
Enter a non-negative number (0 - exit): 123456
d = 6, sum = 6
d = 5, sum = 11
d = 4, sum = 15
d = 3, sum = 18
d = 2, sum = 20
d = 1, sum = 21
n = 123456 is not divisble by 9.
Enter a non-negative number (0 - exit): 0