C Program to Find Sum of Squares of Digits of a Number

In this tutorial, we will learn about how to create a program in C that will find and print sum of squares of any two number and also will learn to find and print sum of squares of digits of any given number by user at run-time.

C Find Sum of Squares of any Two Number

Let's first create a program in C that will ask from user to enter any two number to find and print sum of square of the given two numbers.

#include<stdio.h>
#include<conio.h>
int main()
{
    int num1, num2, sqr1, sqr2, sum;
    printf("Enter any two numbers: ");
    scanf("%d%d", &num1, &num2);
    sqr1 = num1*num1;
    sqr2 = num2*num2;
    sum = sqr1 + sqr2;
    printf("Sum of their square = %d", sum);
    getch();
    return 0;
}

As the program was written under Code::Blocks IDE, therefore after successful build and run, here is the sample run:

c program print sum of square two number

Now supply any two number say 4 and 5 and press ENTER key to see the result that will be the sum of square of given two number. If you will square the two number say 4 and 5, then you will get 16 and 25. After summing it up, you will get 16+25 equals 41 as result. Here is the second snapshot of the sample run:

sum of square of two number c

Here are some of the main steps used in above program:

  • Receive any two number as input from user (at run-time) in any two variables say num1 and num2
  • Calculate the square of both the number one by one and initialized its square to any two variables say sqr1 and sqr2
  • That is num1*num1 gets initialized to sqr1 and num2*num2 gets initialized to sqr2
  • Now calculate sum of two variable say sqr1 (square of first number) and sqr2 (square of second number)
  • That is sqr1+sqr2 gets initialized to a variable say sum (holds summation value of square of the two given number)
  • Print the value of sum at last of the program
  • For example, if user enters 4 and 5 as input
  • Therefore, num1 holds 4 and num2 holds 5
  • Now num1*num1 or 4*4 or 16 gets initialized to sqr1
  • And num2*num2 or 5*5 or 25 gets initialized to sqr2
  • And sqr1+sqr2 or 16+25 or 41 gets initialized to sum
  • Print the value of sum which is 41 as output

C Find Sum of Squares of Digits of a Number

Now let's create a program that will ask from user to enter any number to find and print the sum of squares of its digit. That is if user enters 342 as input, then the program will find the sum of square of its digit, that is (3*3) + (4*4) + (2*2) or 9+16+4 or 29 will be the final result. Let's take a look at the program:

#include<stdio.h>
#include<conio.h>
int main()
{
    int num, rem, sum=0;
    printf("Enter any number: ");
    scanf("%d", &num);
    while(num>0)
    {
        rem = num%10;
        sum = sum + rem*rem;
        num = num/10;
    }
    printf("\nSum of Square of Digits = %d", sum);
    getch();
    return 0;
}

Here is the final snapshot of the sample run:

c find sum of square of digit

Here are some of the main steps used in above program:

  • Receive any number as input
  • Never forgot to take a variable say sum (holds sum of square of digits) with 0 as its initial value
  • That is declare and initialize 0 to sum at start of the program
  • After getting input from user in a variable say num, follow the steps given below
  • Create a while loop, runs until the value of num is greater than 0
  • Inside the loop, calculate the digit of that number using modulous operator (%)
  • Using modulous operator or remainder operator, we will get the last digit of number
  • Find the square of that digit and sum it up with sum variable and then initialize it to sum variable
  • Then divide the value (num) with 10 to skip or delete the last digit
  • For example, if user enters 2346 as input
  • Therefore, at first run of the while loop, as the value of num (2346) is greater than 0, therefore program flow goes inside the loop, and num%10 or 2346%10 or 6 gets initialized to rem. Then sum + rem*rem or 0 + 6*6 or 36 gets initialized to sum. And at last, num/10 or 2346/10 or 234 gets initialized to num
  • And then program flow goes inside the while loop's condition statement, and as the value 234 is again greater than 0, therefore again the condition of while loop evaluates to be true, therefore program flow goes inside the loop, and do the same steps as told above
  • That is, num%10 or 234%10 or 4 gets initialized to rem. And sum + rem*rem or 36 + 4*4 or 36 + 16 or 52 gets initialized to sum. And at last again num/10 or 234/10 or 23 gets initialized to num
  • Again at third run of the while loop, as the condition statement of the loop, that is num>0 or 23>0 evaluates to be true, therefore program flow again goes inside the while loop and follow the same procedure until the value of num becomes 0
  • At last run of the while loop, the variable sum holds its value as 6*6 + 4*4 + 3*3 + 2*2 or 36 + 16 + 9 + 4 or 65 as its final value, therefore 65 is the final output which is the result of sum of square of digits of given number that is 2346

C Online Test


« Previous Program Next Program »