# Factorial Program in C using For Loop

Before move on the factorial program. We have to know about the for loop in C programming language.

The syntax of the For Loop is:

``````for (initialization statement; test expression; an increment or decrement  statement)
{
/* main body of the “for” loop */
}
``````

### How does the For Loop work?

In for loop, the initialization command is implemented only once. After that, it checks the test expression of the loop and finds whether the test expression is false or true. And, for loop is dismissed if the test expression is false.

If the test expression of the 'For loop becomes true, then the program line provided in the For loop’s body is executed, and the update expression is changed accordingly.

Again, the entire process of evaluation is to be done. The loop executes its body until and unless the value of the test expression in for loop becomes false. The loop automatically terminates as soon as the test expression result becomes false.

For loop program in c programming language to find factorial of an entered integer:

With the help of below mentioned example you can easily come to know about the method of calculating of a positive integer provided by the user.

The following formula is used for calculating the factorial of an inputted positive integer ‘n’:

factorial of “n” or (n!) = 1 * 2 * 3 * 4....n

If we talk about the factorial value of 0 is always 1 and the factorial of any negative integer does not exist.

Following Program calculates the Factorial of a natural number using For loop in C programming language:

``````#include <stdio.h>
int main ()
{
int n, a; // declaring variables
unsigned long long fact = 1;
printf ("Enter any positive number: \n"); // taking input from the user
scanf ("%d", &n); // assigning the value inputted by the user to the declared variable
// program line in case the user enters a negative integer, it will display error
if (n < 0) // if termination condition
printf ("Error 404! Sorry to say but there is no factorial of a negative integer."); // to display error
else {
for (a = 1; a <= n; ++a) // (initialization statement, test expression, increment statement)
{
fact *=a;
}
printf ("The factorial of given number is %d = %llu", n, fact); // printing output
}
return 0;
}
``````

Output:

``````Enter an integer: 15
Factorial of 15 = 1307674368000
``````

This program will take a positive integer as an input from the user and compute the factorial of the given number with the help of for loop.

Sometimes, the factorial of some positive integers can be extremely large that’s why the “unsigned long long” is used as the data type of factorial variable to overcome this issue.

Suppose, the user enters any negative integer, the program will automatically display a pre-defined error message like this:

`"Error 404! Sorry to say but there is no factorial of a negative integer"`

### Step by step explanation of above example:

Firstly, we will declare two variables “a” and “n”. Then, we will let the user to assign the value to “n”.

After that, the control will check the first termination condition. If the number entered by the user is less than 0 then it will immediately terminate the loop. But if the value is more than 0 then it will certainly enter the loop. In the loop it will start evaluating the factorial of the given positive number.

As the number entered here was 15. So, the control will easily qualify the first termination condition as 15 is more than 0, because it is a positive number.

So, the control will enter in the loop. In the looping statement, the value of “a” is set to 1 and the termination condition checks the value of “a” is less or equal to the value of “n”.  And, at last, there is an increment statement (++ a) which increase the value of “a” each time during the loop execution.

Initially, the loop will be executed for one time and the value of output is assign to the fact variable. After this, the value of “a” is increased by 1.

This process performs again and again until the value of “a” becomes more than the value of “n”. At last, the loop will certainly terminate.