1. Discuss an important problem with the following code. Run the program and check the output of the program
#include<stdio.h>
int *zoo() {
int x;
x = 2;
return &x;
}
int zoo1(){
int y=675;
int z=90;
return y;
}
void main() {
int *x, *zoo();
x = zoo();
zoo1();
printf("%d", *x);
}
2. Consider the following C function:
void multiply (int m, int n) {
m = m*n;
cout <<m<< "," <<n<< endl;
}
Suppose the function is called with actual parameters i,j where i=2,j=3. If we are using call-by-value show what is printed when called with:
(a) multiply (i,j) and (b) multiply (i,i).
Now suppose that the parameters could be replaced by call-by-value-result parameters. Repeat parts (a) and (b) and explain the different effect (if any). Assume that the instructions are not executed sequentially.
3. In what unusual place can you use a function call when a function returns a values by reference? (hint: function call is usually used at the right hand side of equal sign =). Give a simple example.
4. (a) What is the principle reason for passing arguments by reference?
(b) Suppose a function has the following declaration: void person(char* name, int age); Modify the declaration so that default value for name is unknown and age 20.
5. Write C program generated a weight conversion table using function. What is the difference between program with function and without function? Hint: the ratio of kilo/pound = 0.45359.
6. Write a recursive function to calculate a power of a number.
7. Write a recursive function that prints out a table of Fibonacci numbers. Fibonacci numbers are defined by a series in which any element is the sum of the previous two elements.