The Rest Of It
1. Which of the following statements are true.
1. We have to declare a label before using it.
Ans: False. Labels are not declared.
2. Scope of a label is limited to the function in which it is placed.
Ans: True.
3. A label can be placed in the middle of an expression.
Ans: False. Label is placed at the beginning of a statement.
4. As a good programming practice we should avoid using goto
Ans: True.
5. Use of goto is recommended only for cases where we do not know how control will flow.
Ans: False. Use of goto is not recommended.
2. Which of the following statements are true.
1. Inline functions are textually substituted in the program.
Ans: False. Inline functions are merely an optimization hint.
2. inline is a hint to compiler to optimize execution time of a function.
Ans: True.
3. A static variable is initialized before program execution begins.
Ans: True
4. A local static variable can be accessed by any function in the file.
Ans: False. It is visible only inside the function. You can however use a pointer to access it.
5. An extern variable declaration does not allocate any memory for the variable.
Ans: True.
3. Which of the following statements are true.
1. In a recursive function, we should check base condition before recursive call.
Ans: True.
2. An infinite recursion will eventually evaluate to zero.
Ans: False. It will keep running forever.
3. A recursive function cannot be called with pointer arguments.
Ans: False. It can be called with any type of arguments.
4. If a function calls itself, it is called direct recursion.
Ans: True.
4. Implement recursive program for computing n factorial.
#include <stdio.h> unsigned long int factorial(unsigned long n) { if(1 == n) { return 1; } return n * factorial(n-1); } int main (int argc, char *argv[]) { unsigned int num = 0; unsigned long result = 0; printf("Enter a positive number: "); scanf("%u", &num); if(num == 0) { result = 1; } else { result = factorial(num); } printf("%u! = %lu\n", num, result); return 0; }
5. Implement recursive program for computing nth Fibonacci number.
#include <stdio.h> unsigned long int fibonacci(unsigned long n) { if(0 == n) { return 0; } if(1 == n) { return 1; } return (fibonacci(n-1) + fibonacci(n-2)); } int main (int argc, char *argv[]) { unsigned int num = 0; unsigned long result = 0; printf("Which <u>Fibonacci</u> Number would you like to find: "); scanf("%u", &num); result = fibonacci(num); printf("F(%u) = %lu\n", num, result); return 0; }