Question: I am new to programming in C and I am doing some activities for my first year in CS. The following activity consists of calculating the sum of squares of the digits of a user input number and the output should be as follows:

```none
Number: 1234
  n=1234; sum=16
  n=123; sum=25
  n=12; sum=29
  n=1; sum=30
Result: 30

```

I have got it for the most part, the thing that I don't understand is how to store a value in a variable, update said variable and print the result, all whilst being inside a loop.

This is what I came up with:

```
int main() {

    int num,i,sum=0,result,square;

    printf("Calculate the sum of the square of the digits of a number\n" );
    printf("Number:");
    scanf("%d", &num);
    i=0;
    while(num>i)
    {
        sum=num%10;
        square=sum*sum;
        printf("\nn=%d; sum= %d",num,square);
        num=num/10;
    }
    result=sum;
    printf("\nResult: %d",sum);

    return 0;
}

```

How can I sum the square of the digits all together and print them as the example given?

Answer: 
Write something like the following

```
int digit = num % 10;
square = digit * digit;
sum += square;
printf("\n=%d; sum= %d", num, sum );

```

Pay attention to that the variable i is redundant:

```
i=0;
while(num>i)

```

just write

```
while ( num != 0 )

```

Also introducing the variable `result` is redundant and does not make sense because it is used nowhere.
You need a variable, keeping track of the input number (num), a variable keeping track of the sum ('sum') and a variable with the current digit (digit). Every iteration, you can calculate the digit, square it and add it to the sum. The `a += b` operation is equivalent to `a = a + b`, in case you are wondering. The same is for `a /= b`. Also a concept you can use (but don't have to), is implicit boolean conversion. When using a comparison (like num != 0 or num > 0) you can replace it with the number itself. In C, 0 equals false and everything else equals true.

```
#include <stdio.h>

int main() {
    int num, sum = 0;
    printf("Calculate the sum of the square of the digits of a number\n" );
    printf("Number:");
    scanf("%d", &num);
    while (num) { // is equal to num != 0
        int digit = num % 10;
        sum += digit * digit;
        printf("    n=%d; sum= %d\n", num, sum);
        num /= 10;
    }
    printf("Result: %d\n", sum);
    return 0;
}

```

EDIT:

Some people prefer to use `num != 0` or `num > 0`, because it is more readable. You should stick to it too for the start, until you are paid to confuse your coworkers.