Open In App

C Language | Set 10

Improve
Improve
Like Article
Like
Save
Share
Report

Following questions have been asked in GATE CS 2014 exam.
1) Consider the following program in C language: 
 

C




#include <stdio.h>
main()
{
    int i;
    int *pi = &i;
    scanf("%d", pi);
    printf("%d\n", i+5);
}


Which one of the following statements is TRUE? 
(A) Compilation fails. 
(B) Execution results in a run-time error. 
(C) On execution, the value printed is 5 more than the address of variable i. 
(D) On execution, the value printed is 5 more than the integer value entered.
Answer: (D) 
Explanation: There is no problem in the program as pi points to a valid location. 
Also, in scanf() we pass address of a variable and pi is an address.
2) Consider the function func shown below: 
 

C




int func(int num)
{
    int count = 0;
    while (num)
    {
        count++;
        num >>= 1;
    }
    return (count);
}


The value returned by func(435)is __________.
Answer:
Explanation: The function mainly returns position of Most significant bit in binary representation of n. The MSD in binary representation of 435 is 9th bit.
3) Consider the C function given below. 
 

C




int f(int j)
{
  static int i = 50;
  int k;
  if (i == j)
  {
    printf("something");
    k = f(i);
    return 0;
  }
  else return 0;
}


Which one of the following is TRUE? 
(A) The function returns 0 for all values of j. 
(B) The function prints the string something for all values of j. 
(C) The function returns 0 when j = 50. 
(D) The function will exhaust the runtime stack or run into an infinite loop when j = 50
Answer: (D) 
Explanation: When j is 50, the function would call itself again and again as neither i nor j is changed inside the recursion.
4) Consider the C function given below. Assume that the array listA contains n (> 0) elements, sorted in ascending order. 
 

C




int ProcessArray(int *listA, int x, int n)
{
    int i, j, k;
    i = 0;
    j = n-1;
    do{
        k = (i+j)/2;
        if (x <= listA[k])
            j = k-1;
        if (listA[k] <= x)
            i = k+1;
    } while (i <= j);
    if (listA[k] == x)
        return(k);
    else
        return -1;
}


Which one of the following statements about the function ProcessArray is CORRECT? 
(A) It will run into an infinite loop when x is not in listA. 
(B) It is an implementation of binary search. 
(C) It will always find the maximum element in listA. 
(D) It will return -1 even when x is present in listA.
Answer: (B) 
Explanation: The program is a simple iterative C implementation of Binary Search
5) Consider the following function 
 

C




double f(double x)
{
   if (abs(x*x - 3) < 0.01) return x;
   else return f(x/2 + 1.5/x);
}


Give a value q (to 2 decimals) such that f(q) will return q:_____.
Answer: 1.732 
Explanation: 
The main thing to note is the expression “abs(x*x – 3) < 0.01” inside the if condition. The function would return x when (x – 3 ) is close to 0 (smaller than 0.01) which means when x is close to square root of 3. Square root of 3 is 1.732.
See following for complete solutions of all GATE CS 2014 papers 
GATE-CS-2014-(Set-1) 
GATE-CS-2014-(Set-2) 
GATE-CS-2014-(Set-3)
Please write comments if you find any of the answers/explanations incorrect, or you want to share more information about the topics discussed above.
 



Last Updated : 14 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads