C++ Program to Find and Print Product of Digits of a Number

This article provides some programs in C++ that find and prints product of digits of a number entered by user at run-time. The program is created in following ways:

  • Using while loop
  • Using for loop

And at last, one extra program is also included that finds the product of only non-zero digit of given number.

Find Product of Digits of a Number using while Loop

The question is, write a C++ program that receives a number from user and print the product or multiplication of its digit. The program given below is its answer:

#include<iostream>

using namespace std;
int main()
{
   int num, rem, prod=1;
   cout<<"Enter a Number: ";
   cin>>num;
   while(num>0)
   {
      rem = num%10;
      prod = prod*rem;
      num = num/10;
   }
   cout<<"\nProduct of all digits of given number is: "<<prod;
   cout<<endl;
   return 0;
}

The initial output produced by above C++ program on finding and printing the product of all digits of a given number is given in the following snapshot:

c++ program find product of digits of number

Now supply the input say 1293 as number and press ENTER key to print the product of its all four digits like shown in the snapshot given here:

find product of digits of number c++

The dry run of following block of code, from above program:

while(num>0)
{
   rem = num%10;
   prod = prod*rem;
   num = num/10;
}

with prod=1 and num=1293 goes like:

  • The condition num>0 or 1293>0 evaluates to be True
  • Therefore program flow goes inside the loop and all the three statements gets executed one by one
  • That is, num%10 or 1293%10 or 3 gets initialized to rem, prod*rem or 1*3 or 3 gets initialized to prod, and num/10 or 1293/10 or 129 gets initialized to num
  • Now the condition of loop again gets evaluated with new value of num
  • That is, the condition num>0 or 129>0 again evaluates to be True
  • Therefore program flow again goes inside the loop
  • This process continues until the condition evaluates to be False
  • In this way, the product of digits of number gets calculated

Find Product of Digits of Number using for Loop

This program does the same job as of previous program, but created using for loop, instead of while:

#include<iostream>

using namespace std;
int main()
{
   int num, rem, prod;
   cout<<"Enter a Number: ";
   cin>>num;
   for(prod=1; num>0; num=num/10)
   {
      rem = num%10;
      prod = prod*rem;
   }
   cout<<"\nProduct of all digits of given number is: "<<prod;
   cout<<endl;
   return 0;
}

In above program, the following two statements:

rem = num%10;
prod = prod*rem;

can also be replaced with single statement given below:

prod = prod*(num%10);

Find Product of Digits (except 0) of Number

Since both the program given above gives 0 as output if any digit of given number is 0. Therefore let's modify and create another program that find product of only non-zero digit of given number:

#include<iostream>

using namespace std;
int main()
{
   int num, rem, prod;
   cout<<"Enter a Number: ";
   cin>>num;
   for(prod=1; num>0; num=num/10)
   {
      rem = num%10;
      if(rem>0)
         prod = prod*rem;
   }
   cout<<"\nProduct of all digits of given number is: "<<prod;
   cout<<endl;
   return 0;
}

This program produces same output as of previous program. But previous program prints 0 if any digit of given number is equal to 0, whereas this program does not print 0 if any digit of given number is 0. Rather this only multiplies non-zero digits and prints the multiplication result.

Modified Version of Previous Program

This program is created in a way, to provide little good user interface by showing the ongoing multiplication of digit like 3*2*4.

#include<iostream>

using namespace std;
int main()
{
   int num, rem, prod=1;
   cout<<"Enter a Number: ";
   cin>>num;
   if(num>0)
      cout<<endl;
   else
   {
      cout<<"\nThe number must be greater than 0!\n";
      return 0;
   }
   while(num>0)
   {
      rem = num%10;
      num /= 10;
      if(rem>0)
      {
         prod = prod*rem;
         if(num>0)
            cout<<rem<<"*";
         else
            cout<<rem;
      }
   }
   cout<<" = "<<prod;
   cout<<endl;
   return 0;
}

This program produces following output when user enters a number say 12032 as input:

print product of digits of number c++

You're seeing the digit in the form 2*3*2*1 (in reverse order). Because while finding the remainder using rem = num%10; gives the last digit. But you can reverse the number first then do the task.

To do it, put reverse of a number code in very first if's body and initialize reversed result to the number num itself then proceed. Come on, do it yourself for practice.

C++ Online Test


« Previous Program Next Program »