**C**

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char** argv)
    {
        // iteratively compute factorial here
    
        long int n = 0, i = 0, r = 1 /* product starts at one */;

        if (argc > 1)
        {
            n = strtol(argv[1], NULL, 10);
            if (n < 0)
            {
                printf("arg must be >= 0\n");
                exit(-1);
            }
        }
    
        i = n;
        while (i)
        {
            r = r * i;
            i--;
        }
    
        printf("%ld factorial is %ld\n", n, r);
        // done
    }

**Pronounciation:**

pound include standard<br>
I/O dot h pound include<br>
standard lib dot h<br>

int main int arg c<br>
comma char star star arg v<br>
open brace comment<br>

iteratively<br>
compute factorial here<br>
long int n equals<br>

zero comma i<br>
equals zero comma r<br>
equals one comment<br>

product starts at one<br>
semicolon if arg c<br>
is greater than one<br>

open brace n is<br>
str-to-l of arg v sub<br>
one comma NULL comma ten<br>

semicolon if<br>
n less than zero open<br>
brace printf arg must<br>

be greater than or<br>
equal to zero backslash<br>
n semicolon<br>

exit negative<br> 
one semicolon end brace<br>
end brace i equals<br> 

n semicolon<br>
while i open brace r<br>
equals r times i<br>

semicolon i<br>
decrement semicolon<br>
close brace comment print<br>

the result printf<br>
percent d factorial<br> 
equals percent d<br> 

whack n comma n<br>
comma r semicolon<br>
comment done end brace<br>