Part a Write a C program that tests whether or not the following data types are passed by reference or by value, and prints what it discovers out to the terminal: int array of ints Hypothetically, if your program discovers that an int is passed by value and an array of ints is passed by value, then it should produce output like: int: pass-by-value array of ints: pass-by-value Part b Write a program that: defines an array of 10 ints assigns factorial(x) to array element x, for x in the range 0 through 9, inclusive copies those array elements into a second array of 10 ints, but in reverse order prints out that second array to the terminal