Skip to content
Related Articles

Related Articles

C Language | Set 10
  • Difficulty Level : Easy
  • Last Updated : 18 Feb, 2021

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.
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :