# C program to multiply two number without using multiplication(*) operator

In this example, you will learn about C program to multiply two numbers without using multiplication operator (*). You might be wondering how it is possible:

Let’s see following example.

```4 * 5 = 20
How it works?
(4 + 4 + 4 + 4 + 4) = 20```

Let’s implement this logic in the source code with three different methods.

First, go through following articles for proper understanding.

## #Example 1: C program to multiply two numbers without using multiplication operator (*)

``````//Multiplication of two numbers
#include <stdio.h>

int main()
{
int x, y; //declaring two integer variable
int product = 0; //initializing product to zero

printf("Enter two integers:\n");
scanf("%d%d", &x, &y);

//loop to calculate product
while(y != 0)
{
product += x;
y--;
}

printf("\nProuduct = %d\n", product);
return 0;
}
``````

Output ## #Example 2: C program to multiply two numbers using recursion

``````//Multiplication of two numbers using recursive function
#include <stdio.h>

//function prototype for recursive function
int product( int n1, int n2);

int main ()
{
int x, y;

printf("Enter two integers:\n");
scanf("%d%d", &x, &y);

//calling recursive function
printf("\nProuduct = %d\n", product(x, y));
return 0;
}

//body of recursive function
int product(int n1, int n2)
{
if(n2 == 0)
return 0;

if(n2 > 0)
return (n1 + product(n1, n2 - 1));

if(n2 < 0)
return -product(n1, -n2);
}
``````

Output Explanation

In the above program, we have used `product()` recursion function for multiplying two numbers.

`product()` function uses three `if` condition to check whether the number entered by the user is equal, greater or smaller than zero.

## #Example 3: C program to multiply two numbers using a pointer

``````//Multiplication of two numbers using pointer

#include <stdio.h>
#include <stdlib.h>

int main()
{
int x, y;
char *p;

printf("Enter two integers:\n");
scanf("%d%d", &x, &y);

p = (char *)x;

while(--y)
p = &p[x];

printf("\nProuduct = %d\n", p);
free(p);
return 0;
}
``````

Output Explanation

In the above program, we have used a pointer for multiplication of two numbers.

At first, we have placed the content of `x` into `p` using `p = (char *) x.`

Inside while loop, we have added the content of `x` to `p` using `p = &p[x].`

Finally, we have freed the pointer memory using `free(p).`