Yes / No Questions

Question 1 :

Functions cannot return a floating point number


A). Yes
B). No
Answer : Option B

Explanation :

A function can return floating point value.

Example:

#include 
float sub(float, float); /* Function prototype */

int main()
{
    float a = 4.5, b = 3.2, c;
    c = sub(a, b);
    printf("c = %f\n", c);
    return 0;
}
float sub(float a, float b)
{
   return (a - b);
}
Output:
c = 1.300000


Question 2 :

Every function must return a value


A). Yes
B). No
Answer : Option B

Explanation :

No, If a function return type is declared as void it cannot return any value.


Question 3 :

If a function contains two return statements successively, the compiler will generate warnings. Yes/No ?


A). Yes
B). No
Answer : Option A

Explanation :

Yes. If a function contains two return statements successively, the compiler will generate "Unreachable code" warnings.

Example:

#include
int mul(int, int); /* Function prototype */

int main()
{
    int a = 4, b = 3, c;
    c = mul(a, b);
    printf("c = %d\n", c);
    return 0;
}
int mul(int a, int b)
{
   return (a * b);
   return (a - b); /* Warning: Unreachable code */
}
Output:
c = 12


Question 4 :

Maximum number of arguments that a function can take is 12


A). Yes
B). No
Answer : Option B

Explanation :

No, C can accept upto 127 maximum number of arguments in a function.


Question 5 :

Will the following functions work?

int f1(int a, int b)
{
    return ( f2(20) );
}
int f2(int a)
{
    return (a*a);
}


A). Yes
B). No
Answer : Option A

Explanation :

Yes, It will return the value 20*20 = 400

Example:

#include 
int f1(int, int); /* Function prototype */
int f2(int); /* Function prototype */

int main()
{
    int a = 2, b = 3, c;
    c = f1(a, b);
    printf("c = %d\n", c);
    return 0;
}

int f1(int a, int b)
{
    return ( f2(20) );
}

int f2(int a)
{
    return (a * a);
}
Output:
c = 400


Question 6 :

Usually recursion works slower than loops.


A). Yes
B). No
Answer : Option A

Explanation :

When a recursive call is made, the function/process clones itself and then process that funtion. This leads to time and space constrains.
In a loop, there is no recursive call involved that saves a lot of time and space too.


Question 7 :

Is it true that too many recursive calls may result into stack overflow?


A). Yes
B). No
Answer : Option A

Explanation :

Yes, too many recursive calls may result into stack overflow. because when a function is called its return address is stored in stack.
After sometime the stack memory will be filled completely. Hence stack overflow error will occur.


Question 8 :

In a function two return statements should never occur.


A). Yes
B). No
Answer : Option B

Explanation :

No, In a function two return statements can occur but not successively.

Example:

#include 
int mul(int, int); /* Function prototype */

int main()
{
    int a = 0, b = 3, c;
    c = mul(a, b);
    printf("c = %d\n", c);
    return 0;
}

/* Two return statements in the mul() function */
int mul(int a, int b)
{
   if(a == 0 || b == 0)
   {
        return 0;
   }
   else
   {
        return (a * b);
   }
}
Output:
c = 0