Programming

Question 1
Consider the following C program:
#include <stdio.h>
int counter = 0;
int calc (int a, int b) {
int c;
counter++;
if (b==3) return (a*a*a) ;
else {
c = calc (a, b/3) ;
return (c*c*c) ;
}
}
int main () {
calc (4, 81);
printf ("%d", counter) ;
}
The output of this program is ______.
A
4
B
5
C
6
D
7
       Programming       Programming       GATE 2018       Video-Explanation
Question 1 Explanation: 
Question 2

Consider the following C program.

#include <stdio.h>
struct Outnode { 
    char x, y, z ; 
};

int main () { 
    struct Outnode p = {'1', '0', 'a'+2} ; 
    struct Outnode *q = &p ; 
    printf ("%c, %c", *((char*)q+1), *((char*)q+2)) ; 
    return 0 ; 
} 

The output of this program is

A
0, c
B
0, a+2
C
‘0’, ‘a+2’
D
‘0’, ‘c’
       Programming       Programming       GATE 2018       Video-Explanation
Question 2 Explanation: 
char x = ‘a’+2;
The x variable here stores a character ‘c’ in it.
Because +2 will increment ascii value of a from 92 to 95.
Hence the structure p contains 3 character values and they are ‘1’, ‘0’, and ‘c’.
q is a pointer pointing to structure p.
Hence q is pointing to ‘1’, q+1 pointing to ‘0’ and q+2 pointing to ‘c’.
Option d cannot be correct, as though they are characters, printf will not print them in single quotes.
Question 3

Consider the following C program:

#include<stdio.h> 

void fun1(char *s1, char *s2)  { 
     char *tmp;  
     tmp = s1; 
     s1 = s2; 
     s2 = tmp; 
} 

void fun2(char **s2, char **s2)  { 
     char *tmp; 
     tmp = *s1; 
     *s1 = *s2; 
     *s2 = tmp; 
}

int main ()  { 
     char *str1 = "Hi", *str2 = "Bye"; 
     fun1(str1, str2);     printf("%s %s", str1, str2); 
     fun2(&str1, &str2);   printf("%s %s", str1, str2); 
     return 0; 
} 

The output of the program above is

A
Hi Bye Bye Hi
B
Hi Bye Hi Bye
C
Bye Hi Hi Bye
D
Bye Hi Bye Hi
       Programming       Programming       GATE 2018       Video-Explanation
Question 3 Explanation: 
The first call to the function ‘func1(str1, str2);’ is call by value.
Hence, any change in the formal parameters are NOT reflected in actual parameters.
Hence, str1 points at “hi” and str2 points at “bye”.
The second call to the function ‘func2(&str1, &str2);’ is call by reference.
Hence, any change in formal parameters are reflected in actual parameters.
Hence, str1 now points at “bye” and str2 points at “hi”.
Hence answer is “hi bye bye hi”.
Question 4

Consider the following C code. Assume that unsigned long int type length is 64 bits.

        unsigned long int fun(unsigned long int n)  { 
            unsigned long int i, j, j=0, sum = 0; 
            for (i = n; i > 1; i = i/2) j++; 
            for ( ; j > 1; j = j/2) sum++; 
            return sum; 
        } 

The value returned when we call fun with the input 240 is

A
4
B
5
C
6
D
40
       Programming       Programming       GATE 2018       Video-Explanation
Question 4 Explanation: 
Since 240 is the input, so first loop will make j = 40.
Next for loop will divide j value (which is 40) by 2, each time until j>1.
j loop starts:
j=40 & sum=1
j=20 & sum=2
j=10 & sum=3
j=5 & sum=4
j=2 & sum=5
j=1 & break
So, sum = 5.
Question 5

Consider the following program written in pseudo-code. Assume that x and y are integers.

Count (x, y)  {
    if (y != 1)  {
        if (x != 1)  {
            print("*") ;
            Count (x/2, y) ;
        }
        else  {
             y = y - 1 ; 
             Count (1024, y) ; 
        }
    }
}

The number of times that the print statement is executed by the call Count(1024, 1024) is ______.

A
10230
B
10231
C
10232
D
10233
       Programming       PRogramming       GATE 2018       Video-Explanation
Question 5 Explanation: 
#include
int count=0;
Count(x,y){
if(y!=1){
if(x!=1){
printf("*");
count = count +1;
Count(x/2,y);
}
else{
y=y-1;
Count(1024,y);
}
}
}
void main()
{
Count(1024,1024);
printf("\n%d\n",count);
}


Count ( ) is called recursively for every (y = 1023) & for every y, Count ( ) is called (x = 10) times = 1023 × 10 = 10230
Question 6

Consider the following C code:

             #include <stdio.h>
             int *assignval(int *x, int val)   {
                  *x = val;
                  return x;
             }

             void main ( )  {
                  int  *x = malloc(sizeof(int));
                  if(NULL == x)  return;
                     x = assignval(x, 0);
                     if(x)  {
                           x = (int *)malloc(size of(int));
                           if(NULL == x)  return;
                              x = assignval(x, 10);
                     }
                     printf("%dn",  *x);
                     free(x);
              }

The code suffers from which one of the following problems:

A
compiler error as the return of malloc is not typecast approximately
B
compiler error because the comparison should be made as x==NULL and not as shown
C
compiles successfully but execution may result in dangling pointer
D
compiles successfully but execution may result in memory leak
       Programming       Programming       GATE 2017 [Set-1]       Video-Explanation
Question 6 Explanation: 
Option A:
In C++, we need to perform type casting, but in C Implicit type casting is done automatically, so there is no compile time error, it prints10 as output.
Option B:
NULL means address 0, if (a == 0) or (0 == a) no problem, though we can neglect this, as it prints 10.
Option C:
x points to a valid memory location. Dangling Pointer means if it points to a memory location which is freed/ deleted.
int*ptr = (int*)malloc(sizeof(int));
free(ptr); //ptr becomes a dangling pointer
ptr = NULL; //Removing Dangling pointers condition
Option D:
x is assigned to some memory location
int*x = malloc(sizeof(int));
→ (int*)malloc(sizeof(int)) again assigns some other location to x, previous memory location is lost because no new reference to that location, resulting in Memory Leak.
Hence, Option D.
Question 7

Consider the following two functions.

void fun1(int n)   {                 void fun2(int n)   {
        if(n == 0)  return;                  if(n == 0)  return;
        printf("%d", n);                     printf("%d", n);
        fun2(n - 2);                         fun1(++n);
        printf("%d", n);                     printf("%d", n);
}                                    }

The output printed when fun1(5) is called is

A
53423122233445
B
53423120112233
C
53423122132435
D
53423120213243
       Programming       Programming       GATE 2017 [Set-1]       Video-Explanation
Question 7 Explanation: 


In fun2, we increment (pre) the value of n, but in fun1, we are not modifying the value.
Hence increment in value in recursion (back).
Hence, 5 3 4 2 3 1 2 2 2 3 3 4 4 5.
Question 8

Consider the C functions foo and bar given below:

         int foo(int val)   {
                 int x = 0;
                 while (val>0)   {
                    x = x + foo(val--); 
                 }
                 return val;
               }

               int bar(int val)   {
                  int x = 0;
                  while (val>0)   {
                      x = x + bar(val-1);
                  }
                  return val;
               }

Invocations of foo(3) and bar(3) will result in:

A
Return of 6 and 6 respectively.
B
Infinite loop and abnormal termination respectively.
C
Abnormal termination and infinite loop respectively.
D
Both terminating abnormally.
       Programming       Programming       GATE 2017 [Set-1]       Video-Explanation
Question 8 Explanation: 
while(val>0)
{
x = x + foo(val--);
}
In this case foo(val--) is same as foo(val) & val-- ;
Because the recursive function call is made without changing the passing argument and there is no Base condition which can stop it.
It goes on calling with the same value ‘val’ & the system will run out of memory and hits the segmentation fault or will be terminated abnormally.
The loop will not make any difference here.
while(val>0)
{
x = x + bar(val-1);
}
bar(3) calls bar(2)
bar(2) calls bar(1)
bar(1) calls bar(0) ⇾ Here bar(0) will return 0.
bar(1) calls bar(0)
bar(1) calls bar(0)……..
This will continue.
Here is a problem of infinite loop but not abrupt termination.
Some compilers will forcefully preempt the execution.
Question 9

Consider the following C program.

#include <stdio.h>
#include <string.h>

void printlength (char*s, char*t)   {
   unsigned int c = 0;
   int len = ((strlen(s) - strlen(t)) > c) ? strlen(s):strlen(t);
   printf("%d\n", len);
}

void main ()  { 
   char*x = "abc";
   char*y = "defgh";
   printlength(x,y);
}

Recall that strlen is defined in string.h as returning a value of type size_t, which is an unsigned int. The output of the program is _________.

A
3
B
4
C
5
D
6
       Programming       Programming       GATE 2017 [Set-1]       Video-Explanation
Question 9 Explanation: 
main ( )
{
char*x = "abc";
char*y = "defgh";
printlength(x,y);
}
printlength(char*3, char*t)
{
unsigned int c = 0;
int len = ((strlen(s) - strlen(t))> c) ? strlen(s) : strlen(t);
printf("%d", len);
}
Here strlen(s) - strlen(t) = 3 - 5 = -2
But in C programming, when we do operations with two unsigned integers, result is also unsigned. (strlen returns size_t which is unsigned in most of the systems).
So this result '-2' is treated as unsigned and its value is INT_MAX-2.
Now the comparison is in between large number & another unsigned number c, which is 0.
So the comparison returns TRUE here.
Hence (strlen(s) - strlen(t))>0 will return TRUE, on executing, the conditional operator will return strlen(s)
⇒ strlen(abc) = 3
Question 10

The output of executing the following C program is __________.

           #include<stdio.h>
           int total (int v)   {
               static int count=0;
               while(v)   {
                   count += v&1;
                   v ≫= 1;
               }     
               return count;
           }

           void main()    {
               static int x = 0;
               int i = 5;
               for(; 1> 0; i--)    {
                  x = x + total(i);
               }
               printf("%d\n", x);
           }
A
23
B
24
C
25
D
26
       Programming       Programming       GATE 2017 [Set-1]       Video-Explanation
Question 10 Explanation: 
Arithmetic operators have least priority in this case, as count+=v & 1, we first compute v& 1 and then adds to count variable.

Question 11

Consider the following function implemented in C:

void printxy (int x, int y)   {
      int *ptr;
      x = 0;
      ptr = &x;
      y = *ptr;
      *ptr = 1;
      printf("%d,%d",x,y);
}

The output of invoking printxy(1, 1) is

A
0, 0
B
0, 1
C
1, 0
D
1, 1
       Programming       Programming       GATE 2017 [Set-2]       Video-Explanation
Question 11 Explanation: 
printxy (int x, int y)
{
int *ptr;
x = 0;
ptr = &x;
y = *ptr;
*ptr = 1;

}
printxy (1, 1)
Question 12

Consider the C program fragment below which is meant to divide x and y using repeated subtractions. The variables x, y, q and r are all unsigned int.

          while (r >= y)  {
              r = r - y;
              q = q + 1;
          }

Which of the following conditions on the variables x, y, q and r before the execution of the fragment will ensure that the loop terminates in a state satisfying the condition x == (y*q + r)?

A
(q == r) && (r == 0)
B
(x > 0) && (r == x) && (y > 0)
C
(q == 0) && (r == x) && (y > 0)
D
(q == 0) && (y > 0)
       Programming       Programming       GATE 2017 [Set-2]       Video-Explanation
Question 12 Explanation: 
Divide x by y.
x, y, q, r are unsigned integers.
while (r >= y)
{
r = r – y;
q = q + 1;
}
Loop terminates in a state satisfying the condition
x == (y * q + r)
y ⇒ Dividend = Divisor * Quotient + Remainder
So, to divide a number with repeated subtractions, the Quotient should be initialized to 0 and it must be incremented for every subtraction.
So initially q=0 which represents
x = 0 + r ⇒ x = r
and y must be a positive value (>0).
Question 13

Consider the following snippet of a C program. Assume that swap(&x, &y)  exchanges the contents of x and y.

int main ()  {
      int array[] = {3, 5, 1, 4, 6, 2};
      int done = 0;
      int i;

      while (done == 0)  {
           done = 1;
           for (i=0; i<=4; i++)  {
                if (array[i] < array[i+1])  {
                       swap (&array[i], &array[i+1]);
                       done = 0;
                }
           }
           for (i=5; i>=1; i--)  {
                if (array[i] > array[i-1])   {
                      swap(&array[i], &array[i-1]);
                      done=0;
                }
           }
       }
       printf("%d", array[3]);
}

The output of the program is ___________.

A
3
B
4
C
5
D
6
       Programming       Programming       GATE 2017 [Set-2]       Video-Explanation
Question 13 Explanation: 
Swap (&x, &y) exchanges the contents of x & y.

(1) ⇒ 1st for i = 0 <= 4
a[0] < a[1] ≃ 3<5 so perform swapping
done =

(1) ⇒ no swap (3, 1)
(2) ⇾ perform swap (1, 4)

(1) ⇒ perform swap (1, 6)

(1) ⇒ perform swap (1, 2)

(1) ⇒ (done is still 0)
for i = 5 >= 1 a[5] > a[4] ≃ 1>2 – false. So, no swapping to be done
(2) ⇾ no swap (6, 2)
(3) ⇾ swap (4, 6)

(1) ⇒ Swap (3, 6)

(1) ⇒ Swap (5, 6)

⇒ Done is still 0. So while loop executes again.
(1) ⇾ no swap (6, 5)
done = 1
(2) ⇾ No swap (5, 3)
(3) ⇾Swap (3, 4)

So, array [3] = 3
Question 14

Consider the following C program:

#include <stdio.h>
int main()
{
    int m = 10;
    int n, n1;
    n = ++m;
    n1 = m++;
    n--;
    --n1;
    n -= n1;
    printf("%d",n);
    return 0;
}

The output of the program is _______.

A
0
B
1
C
2
D
3
       Programming       Programming       GATE 2017 [Set-2]       Video-Explanation
Question 14 Explanation: 
Question 15

Consider the following C program.

#include<stdio.h>
#include<string.h>
int main ()  {
  char* c = "GATECSIT2017";
  char* p = c;
  printf("%d", (int) strlen (c + 2[p] - 6[p] - 1));
  return 0;
}

The output of the program is __________.

A
1
B
2
C
4
D
6
       Programming       Programming       GATE 2017 [Set-2]       Video-Explanation
Question 15 Explanation: 
char * C = “GATECSIT2017”;
char * P = C;
(int) strlen (C + 2[P] – 6[P] – 1)

C + 2[P] - 6[P] – 1
     ∵2[P] ≃ P[2]
100 + P[2] – P[6] – 1
100 + T – I – 1
100 + 84 – 73 – 1
     ASCII values: T – 84, I – 73
100 + 11 – 1
= 110
(int) strlen (110)
strlen (17) ≃ 2
Question 16

Consider the following C program.

void f(int, short);
void main ()
{
     int i = 100;
     short s = 12;
     short *p = &s;
     __________ ;         // call to f()
}

Which one of the following expressions, when placed in the blank above, will NOT result in a type checking error?

A
f(s, *s)
B
i = f(i, s)
C
f(i, *s)
D
f(i, *p)
       Programming       Programming       GATE 2016 [Set-1]       Video-Explanation
Question 16 Explanation: 
int i = 100;
short s = 12;
short *p = &s;
_______ // call to f ( ) :: (void f(int,short);)
It is clearly mentioned the return type of f is void.
By doing option elimination
(A) & (C) can be eliminated as s is short variable and not a pointer variable.
(B) i = f(i, s) is false because f’s return type is void, but here shown as int.
(D) f(i, *p)
i = 100
*p = 12
Hence TRUE
Question 17

Consider the following C program.

#include<stdio.h>
void mystery(int *ptra, int *ptrb) {
      int *temp;
      temp = ptrb;
      ptrb = ptra;
      ptra = temp;
}
int main() {
      int a=2016, b=0, c=4, d=42;
      mystery(&a, &b);
      if (a < c)
             mystery(&c, &a);
      mystery(&a, &d);
      printf("%d\n", a);
}

The output of the program is ________.

A
2016
B
2017
C
2018
D
2019
       Programming       Programming       GATE 2016 [Set-1]       Video-Explanation
Question 17 Explanation: 

For the first mystery (&a, &b);

temp = ptr b
ptr b = ptr a
ptr a = temp
If (a The function mystery (int *ptra, int *ptrb) does not change the value of variables pointed by pointers, instead it only changes the addresses inside the pointers, which is in no way going to modify the values of a, b, c, d.
Hence, a = 2016 will be printed.
Question 18

The following function computes the maximum value contained in an integer array p[] of size n (n >= 1).

       int max(int *p, int n) {
           int a=0, b=n-1;
           
           while (__________) {
               if (p[a] <= p[b]) {a = a+1;}
               else                 {b = b-1;}
           }

           return p[a];
       }

The missing loop condition is

A
a != n
B
b != 0
C
b > (a + 1)
D
b != a
       Programming       Programming       GATE 2016 [Set-1]       Video-Explanation
Question 18 Explanation: 
main ( )
{
int arr [ ] = {3, 2, 1, 5, 4};
int n = sizeof(arr) / sizeof (arr[0]);
printf (max(arr, 5));
}
int max (int *p, int n)
{
int a = 0, b = n – 1;
(while (a!=b))
{
if (p[a] <= p[b])
{
a = a + 1;
}
else
{
b =b – 1;
}
}
return p[a];
}
The function computes the maximum value contained in an integer array p[ ] of size n (n >= 1).
If a = = b, means both are at same location & comparison ends.
Question 19

What will be the output of the following C program?

void count(int n)  {
     static int d=1;

     printf("%d ", n);
     printf("%d ", d);
     d++;
     if(n>1) count(n-1);
     printf("%d ", d);
}

void main() {
     count(3);
}
A
3 1 2 2 1 3 4 4 4
B
3 1 2 1 1 1 2 2 2
C
3 1 2 2 1 3 4
D
3 1 2 1 1 1 2
       Programming       Programming       GATE 2016 [Set-1]       Video-Explanation
Question 19 Explanation: 

Count (3)
static int d = 1
It prints 3, 1
d++; //d = 2
n>1, count(2)
prints 2, 2
d++; // d = 3
n>1, count(1)
prints 1, 3 → Here n = 1, so condition failed & printf (last statement) executes thrice & prints d
d++; //d=4 value as 4. For three function calls, static value retains.
∴ 312213444
Question 20

What will be the output of the following pseudo-code when parameters are passed by reference and dynamic scoping is assumed?

       a=3;
       void n(x) {x = x * a; print(x);}
       void m(y) {a = 1; a = y - a; n(a); print(a);}
       void main() {m(a);}
A
6, 2
B
6, 6
C
4, 2
D
4, 4
       Programming       Programming       GATE 2016 [Set-1]       Video-Explanation
Question 20 Explanation: 

First m(a) is implemented, as there are no local variables in main ( ), it takes global a = 3;
m(3) is passed to m(y).
a = 1
a = 3 – 1 = 2
n(2) is passed to n(x).
Since it is dynamic scoping
x = 2 * 2 = 4 (a takes the value of its calling function not the global one).
The local x is now replaced in m(y) also.
Hence, it prints 4,4.
And we know it prints 6, 2 if static scoping is used.
It is by default in C programming.
Question 21

The value printed by the following program is __________.

     void f(int* p, int m) {
        m = m + 5;
        *p = *p + m;
        return;
     }

     void main() {
        int i=5, j=10;
        f(&i, j);
        printf("%d", i+j);
     }
A
30
B
31
C
32
D
33
       Programming       Programming       GATE 2016 [Set-2]       Video-Explanation
Question 21 Explanation: 

P is a pointer stores the address of i, & m is the formal parameter of j.
Now, m = m + 5;
*p = *p + m;

Hence, i + j will be 20 + 10 = 30.
Question 22

The following function computes XY for positive integers X and Y.

       int exp (int X, int Y) {
           int res = 1, a = X, b = Y;

           while ( b != 0 ){
               if ( b%2 == 0) { a = a*a; b = b/2; }
               else           { res = res*a; b = b-1; }
           }
           return res;

        }

Which one of the following conditions is TRUE before every iteration of the loop?

A
XY = ab
B
(res * a)Y = (res * X)b
C
XY = res * ab
D
XY = (res * a)b
       Programming       Programming       GATE 2016 [Set-2]       Video-Explanation
Question 22 Explanation: 
int exp (int X, int Y)
{
int res = 1, a = X, b = Y;
while (b != 0)
{
if (b%2 == 0)
{
a = a*a;
b = b/2;
}
else
{
res = res*a;
b = b – 1;
}
}
return res;
}
From that explanation part you can understand the exponent operation, but to check the conditions, first while iteration is enough.
x = 2, y = 3, res = 2, a = 2, b = 2.
Only (C) satisfies these values.
xy = res * ab
23 = 2 * 22 = 8
Explanation:
Will compute for smaller values.
Let X = 2, Y = 3, res = 1
while (3 != 0)
{
if(3%2 == 0) - False
else
{
res = 1*2 = 2;
b = 3 – 1 = 2;
}
For options elimination, consider
return res = 2 (but it is out of while loop so repeat while)
__________
while (2 != 0)
{
if (2%2 == 0) - True
{
a = 2*2 = 4
b = 2/2 = 1
}
__________
repeat while
while (1 != 0)
{
if (1%2 == 0) - False
else
{
res = 2 * 4 = 8
b = 1 – 1 = 0
}
__________
while (0 != 0) - False
return res = 8 (23)
Question 23

Consider the following program:

    int f(int *p, int n)
    {
       if (n <= 1) return 0;
       else return max (f(p+1,n-1),p[0]-p[1]);
    }

    int main()
    {
       int a[] = {3,5,2,6,4};
       printf("%d", f(a,5));
    }
Note: max(x,y) returns the maximum of x and y.

The value printed by this program is __________.

A
3
B
4
C
5
D
6
       Programming       Programming       GATE 2016 [Set-2]       Video-Explanation
Question 23 Explanation: 
Given

f(a, 5) ⇒ f(100, 5)
Question 24

The output of the following C program is __________.

void f1 (int a, int b)
{
  int c;
  c=a; a=b; b=c;
}
void f2 (int *a, int *b)
{
  int c;
  c=*a; *a=*b;*b=c;
}
int main()
{
  int a=4, b=5, c=6;
  f1(a, b);
  f2(&b, &c);
  printf (“%d”, c-a-b);
  return 0;
}
A
-5
B
6
C
7
D
8
       Programming       Programming       GATE 2015 [Set-1]
Question 24 Explanation: 
Function f1 will not swap the value of 'a' and 'b' because f1 is call by value.
But f2 will swap the value of 'b' and 'c' because f2 is call by reference. So finally the value of
a=4
b=6
c=5
So, answer will be
c - a - b
5 - 4 - 6 = -5
Question 25

What is the output of the following C code? Assume that the address of x is 2000 (in decimal) and an integer requires four bytes of memory.

 
int main() { 
        unsigned int x[4][3] = 
          {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
        printf("%u, %u, %u", x+3, *(x+3), *(x+2)+3);
}
A
2036, 2036, 2036
B
2012, 4, 2204
C
2036, 10, 10
D
2012, 4, 6
       Programming       Programming       GATE 2015 [Set-1]
Question 25 Explanation: 
⇒ Address of x = 2000
⇒ x [4] [3] can represents that x is a 2-dimensional array.
⇒ x+3 = (Address of x) + 3 * 4 * 3 [3×4×3 is inner dimention]
= 2000 + 36
= 2036
⇒ *(x+3) also returns the address i.e., 2036.
The '*' represents 1 - D but x is starting at 2036.
⇒ *(x+3)+3 = *(Address of x + 2 * 3 * 4) + 3
= *(2000 + 24) +3
= *(2024) + 3 ['*' will change from 2D to 1D]
= 2024 + 3 * 4
= 2024 + 12
= 2036
Question 26

Consider the following pseudo code, where x and y are positive integers.

begin
   q := 0
   r := x
while r >= y do
   begin
      r := r – y
      q := q + 1
   end
end

The post condition that needs to be satisfied after the program terminates is

A
{r = qx+y ∧ r
B
{x = qy+r ∧ r
C
{y = qx+r ∧ 0
D
{q+10}
       Programming       Programming       GATE 2015 [Set-1]
Question 26 Explanation: 
The loop terminates when r In each iteration q is incremented by 1 and y is subtracted from 'r'. Initial value of 'r' is 'x'. So, loop iterates x/y times and q will be equal to x/y and r = x%y.
⇒ x = qy + r
Question 27

Consider the following C program segment.

while (first <= last)
{
   if (array [middle] < search)
      first = middle +1;
   else if (array [middle] == search)
      found = True;
   else last = middle – 1;
   middle = (first + last)/2;
}
if (first < last) not Present = True;

The cyclomatic complexity of the program segment is __________.

A
5
B
6
C
7
D
8
       Programming       Programming       GATE 2015 [Set-1]
Question 27 Explanation: 
Note: Out of syllabus.
Question 28

Consider the following C function.

int fun1 (int n)
{
   int i, j, k, p, q = 0;
   for (i = 1; i<n; ++i)
   {
      p = 0;
      for (j = n; j > 1; j = j/2)
         ++p;
      for (k = 1; k < p; k = k*2)
         ++q;
   }
   return q;
}

Which one of the following most closely approximates the return value of the function fun1?

A
n3
B
n(log n)2
C
nlog n
D
nlog (log n)
       Programming       Programming       GATE 2015 [Set-1]
Question 28 Explanation: 
for (i=1; i p=0;
for (j=n; j>1; j=j/2) --- p = O(log n) ++p;
for (k=1; k ++q;
}
∴ The return value of the function fun1,
q = n log p
= n log log n
Question 29

Consider the following function written the C programming language.

       void foo(char *a) {
          if(*a && *a != ' ') {
              foo(a+1);
              putchar(*a);
           }
       }

The output of the above function on input "ABCD EFGH" is

A
ABCD EFGH
B
ABCD
C
HGFE DCBA
D
DCBA
       Programming       Programming       GATE 2015 [Set-2]
Question 29 Explanation: 

if condition fails
& returns controls
∴ DCBA will be pointed
Question 30

Consider the following C functions

      int fun(int n) {
          int x = 1, k;
          if(n == 1) return x;
          for(k = 1; k < n; ++k)
              x = x + fun(k) * fun(n - k);
          return x;
      }

The return value of fun(5) is _______.

A
51
B
52
C
53
D
54
       Programming       Programming       GATE 2015 [Set-2]
Question 30 Explanation: 
Recurrence Relation is
f(n) = 1; if n = 1
Question 31

Consider the C program below.

#include 
int *A, stkTop;
int stkFunc (int opcode, int val)
{
    static int size=0, stkTop=0;
    switch (opcode)
    {
    case -1:
        size = val;
        break;
    case 0:
        if (stkTop < size ) A[stkTop++]=val;
        break;
    default:
        if (stkTop) return A[--stkTop];
    }
    return -1;
}
int main()
{
    int B[20];
    A=B;
    stkTop = -1;
    stkFunc (-1, 10);
    stkFunc (0, 5);
    stkFunc (0, 10);
    printf ("%dn", stkFunc(1, 0)+ stkFunc(1, 0));
}

The value printed by the above program is ___________

A
-2
B
2
C
-1
D
15
       Programming       Programming       GATE 2015 [Set-2]
Question 31 Explanation: 
When first time stkFunc (-1,10) will be called then, inside Switch(opcode) the control will go to Case-I, where size = 10.
When next time stkFunc (0,5) is called then, inside Switch(opcode), the control will go to Case-0, where A[0] = 5 and stkTop = 0+1 = 1.
When next time stkFunc (0,10) is called then, inside Switch (opcode), the control will go to Case '0', where A[1] = 10 and stkTop = 1+1 = 2.
When next time stkFunc(1,0) is called from inside the printf statement, then inside Switch(opcode), the control will go to default and stkTop = 2-1 = 1 and value of A[1] will get returned, i.e., 10.
When next time stkFunc(1,0) is called from inside the printf statement, then inside Switch(opcode), the control will go to default and stkTop = 1-1 = 0 and value of A[0] will get returned, i.e., 5.
Finally the two values 10 & 5 will be added and printed.
Question 32

Consider the following C program segment.

# include 
int main( )
{
    char s1[7] = "1234", *p;
    p = s1 + 2;
    *p = '0' ;
    printf ("%s", s1);
} 

What will be printed by the program?

A
12
B
120400
C
1204
D
1034
       Programming       Programming       GATE 2015 [Set-3]
Question 32 Explanation: 
p = s1+2;
p now points to third element in s1, i.e., '3'.
*p = '0', will make value of '3' as '0' in s1. And finally s1 will become 1204.
Question 33

Consider the following recursive C function. If get(6) function is being called in main() then how many times will the get() function be invoked before returning to the main()?

void get (int n)
{
   if (n < 1) return;
   get(n-1);
   get(n-3);
   printf("%d", n);
}
A
15
B
25
C
35
D
45
       Programming       Programming       GATE 2015 [Set-3]
Question 33 Explanation: 
Question 34

Consider the following C program.

# include 
int main( )
{
  static int a[] = {10, 20, 30, 40, 50};
  static int *p[] = {a, a+3, a+4, a+1, a+2};
  int **ptr = p;
  ptr++;
  printf("%d%d", ptr - p, **ptr};
}

The output of the program is _________.

A
140
B
150
C
160
D
170
       Programming       Programming       GATE 2015 [Set-3]
Question 34 Explanation: 

**ptr = 40
∴ printf (“%d%d”, p + r – p, p + r) will print 140.
Question 35

Consider the following C program:

# include 
int main( )
{
   int i, j, k = 0;
   j = 2 * 3 / 4 + 2.0 / 5 + 8 / 5;
   k  -= --j;
   for (i = 0; i < 5; i++)
   {
      switch(i + k)
      {
         case 1:
         case 2: printf("n%d", i + k);
         case 3: printf("n%d", i + k);
         default: printf("n%d", i + k);
      }
   }
   return 0;
}

The number of times printf statement is executed is __________.

A
10
B
11
C
12
D
13
       Programming       Programming       GATE 2015 [Set-3]
Question 35 Explanation: 
j = 2*3 / 4+2.0 / 5+8 / 5;
= 6 / 4+2.0 / 5+1;
= 1 + 0.4 + 1
= 2.4
But since j is integer,
j=2
Now,
k = k - (--j)
k = 0 - (1) = -1
When i=0, i+k = -1,
printf executed 1 time
When i=1, i+k = 0,
printf executed 1 time
When i=2, i+k = 1,
printf executed 3 times
When i=3, i+k = 2,
printf executed 3 times
When i=4, i+k = 3,
printf executed 2 times
∴ Total no. of times printf executed is,
1 + 1 + 3 + 3 + 2 = 10
Question 36

Consider the following C program. The output of the program is __________.

# include 
int f1(void);
int f2(void);
int f3(void);
int x = 10;
int main()
{
    int x = 1;
    x += f1() + f2() + f3() + f2();
    pirntf("%d", x);
    return 0;
}
 
int f1()
{
    int x = 25;
    x++;
    return x;
}
 
int f2( )
{
    static int x = 50;
    x++;
    return x;
}
 
int f3( )
{
    x *= 10;
    return x;
}
A
230
B
240
C
250
D
260
       Programming       Programming       GATE 2015 [Set-3]
Question 36 Explanation: 
x = x + f1( ) + f2( ) + f3( ) + f4( )
f1( ) = 25 + 1 = 26
f2( ) = 50 + 1 = 51
f3( ) = 10 × 10 = 100
f2( ) = 51 × 1 = 52 (Since here x is static variable so old value retains)
∴ x = 1+26+51+100+52 = 230
Question 37

Consider the following program in C language:

#include 
main()
{
    int i;
    int *pi = &i;
    scanf("%d", pi);
    printf("%dn", 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.
       Programming       Programming       GATE 2014 [Set-1]
Question 37 Explanation: 
int i; // Initially i takes the Garbage value
int *pi = &i; // pi is a pointer which stores the address of i.
scanf (pi); // pi = &i (we rewrite the garbage value with our values) say x = 2
printf (i+5); // i+5 = x+5 = 2+5 = 7
Hence on execution, the value printed is 5 more than the integer value entered.
Question 38

Consider the function func shown below:

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

The value returned by func(435)is __________.

A
9
B
10
C
11
D
12
       Programming       Programming       GATE 2014 [Set-2]
Question 38 Explanation: 
Shift right of 1, which means the number gets half.
Shift left of 1, which means the number gets doubled.
In program, shift right of 1 is given, means every time we enter the loop the number will get halved, and the value of count will get incremented by 1. And when the value of num will become zero then the while loop will get terminated. So,
num = 435/2 = 217/2 = 108/2 = 54/2 = 27/2= 13/2 = 6/2 = 3/2 = 1/2 = 0
Count = 9
So, the value count that will get returned is 9.
Question 39

Suppose n and p are unsigned int variables in a C program. We wish to set p to nC3. If n is large, which one of the following statements is most likely to set p  correctly?

A
p = n * (n-1) * (n-2) / 6;
B
p = n * (n-1) / 2 * (n-2) / 3;
C
p = n * (n-1) / 3 * (n-2) / 2;
D
p = n * (n-1) * (n-2) / 6.0;
       Programming       Programming       GATE 2014 [Set-2]
Question 39 Explanation: 
n & p are unsigned int variable.
From the options n*(n-1)*(n-2) will go out of range. So eliminate A & D.
n*(n-1) is always an even number. So subexpression n(n-1)/2 also an even number.
n*(n-1)/ 2*(n-2), gives a number which is a multiple of 3. So dividing with 3 will not have any loss. Hence B is option.
Question 40

Consider the following function

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:_____.

A
1.73
B
1.74
C
1.75
D
1.76
       Programming       Programming       GATE 2014 [Set-2]
Question 40 Explanation: 
f(q) will return q, if
x2 - 3 < 0.01 will become True.
So, x2 - 3 < 0.01
x2 - 3 < 0.01
x2 < 3.01
x < 1.732
Hence, x = 1.73.
Question 41

Consider the C function given below.

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.
       Programming       Programming       GATE 2014 [Set-2]
Question 41 Explanation: 
Let's say that value of j given inside the function is 50.
int f(int j)
{
static int i = 50;
int k;
if (i == j) // This will be True.
{
printf ("Something");
k = f(i); // Again called f(i) with value of i as 50. So, the function will run into infinite loop.
return 0;
}
else return 0;
}
Question 42

Let A be a square matrix of size n x n. Consider the following program. What is the expected output?

C = 100
for i = 1 to n do
    for j = 1 to n do
    {
        Temp = A[i][j] + C
        A[i][j] = A[j][i]
        A[j][i] = Temp - C
    } 
for i = 1 to n do
    for j = 1 to n do
        Output(A[i][j]);
A
The matrix A itself
B
Transpose of the matrix A
C
Adding 100 to the upper diagonal elements and subtracting 100 from lower diagonal elements of A
D
None of the above
       Programming       Programming       GATE 2014 [Set-3]
Question 42 Explanation: 
Let be a small matrix.
For first row iteration, it get swapped and becomes
For second row iteration, it comes to the original position
=A
So, it is the same matrix A.
Question 43

Consider the following function:

int unknown(int n) {
    int i, j, k = 0;
    for (i  = n/2; i <= n; i++)
        for (j = 2; j <= n; j = j * 2)
            k = k + n/2;
    return k;
 }
A
Θ(n2)
B
Θ(n2 log n)
C
Θ(n3)
D
Θ(n3 logn)
       Programming       Programming       GATE 2013
Question 43 Explanation: 
Outer loop runs for (n/2) times and inner loop runs for (logn) times.
So, the total number of times loop runs is (n/2 logn).
So, the final k value will be n/2*(n/2 logn) = O(n2logn)
= (n/2+1).n/2 ∙log n
= (n2log n)
Question 44

The procedure given below is required to find and replace certain characters inside an input character string supplied in array A. The characters to be replaced are supplied in array oldc, while their respective replacement characters are supplied in array newc. Array A has a fixed length of five characters, while arrays oldc and newc contain three characters each. However, the procedure is flawed

void find_and_replace(char *A, char *oldc, char *newc) {
    for (int i = 0; i < 5; i++)
       for (int j = 0; j < 3; j++)
           if (A[i] == oldc[j]) A[i] = newc[j];
}

The procedure is tested with the following four test cases

(1) oldc = "abc", newc = "dab" 
(2) oldc = "cde", newc = "bcd" 
(3) oldc = "bca", newc = "cda" 
(4) oldc = "abc", newc = "bac" 

If array A is made to hold the string “abcde”, which of the above four sest cases will be successful in exposing the flaw in this procedure?

A
None
B
2 only
C
3 and 4 only
D
4 only
       Programming       Programming       GATE 2013
Question 44 Explanation: 
The test cases 3 & 4 captures the flaw. The code does not works fine when an old character is replaced by a new character & new character is again replaced by another new character.
1, 2 works fine, 3, 4 carries flaw.
Question 45

Consider the following program

                Program P2 
                   var n: int: 
                   procedure W(var x: int) 
                   begin 
                          x=x+1; 
                          print x;   
                   end 

                procedure D 
                begin  
                          var n: int; 
                          n=3; 
                          W(n);  
                End 
            begin               //beginP2 
                n=10; 
                D; 
            end  

If the language has dynamic scoping and parameters are passed by reference, what will be printed by the program?

A
10
B
11
C
3
D
None of the above
       Programming       Programming       GATE 2001
Question 45 Explanation: 
n=3
W(n)=W(3)
Procedure W(var x; int)
begin
x = x+1 = 3+1 = 4
Print x → Print x=4
end
Question 46

What value would the following function return for the input x=95?

                 Function fun (x:integer):integer;
      Begin
                 If x > 100 then fun = x - 10
                 Else fun = fun(fun(x + 11))
      End;  
A
89
B
90
C
91
D
92
       Programming       Programming       GATE 1998
Question 46 Explanation: 
Value returned by
fun(95) = fun(fun(106))
= fun(96)
= fun(fun(107))
= fun(97)
= fun(fun(108))
= fun(98)
= fun(fun(109))
= fun(99)
= fun(110)
= fun(100)
= fun(fun(111))
= fun(101)
= 91
Question 47

What is the result of the following program?

program side-effect (input, output);
    var x, result: integer;
    function f (var x:integer):integer;
    begin
        x:x+1;f:=x;
    end;
begin
    x:=5;
    result:=f(x)*f(x);
    writeln(result);
end; 
A
5
B
25
C
36
D
42
       Programming       Programming       GATE 1998
Question 47 Explanation: 
If it is call by reference then answer is 42.
If it is call by value then answer is 36.
Question 48

What is the value of X printed by the following program?

 program COMPUTE (input, output);
    var
                  X:integer;
    procedure FIND (X:real);
                  begin
                  X:=sqrt(X);
                  end;
   begin
                  X:=2
                  Find(X)
                  Writeln(X)
   end 
A
2
B
√2
C
Run time error
D
None of the above
       Programming       Programming       GATE 1995
Question 48 Explanation: 
Since nothing is said in question. So we will assume by default call by value.
X in the procedure FIND is a local variable. No change will be reflected in global variable X.
Question 49

An unrestricted use of the “goto” statement is harmful because

A
it makes it more difficult to verify programs
B
it increases the running time of the programs
C
it increases the memory required for the programs
D
it results in the compiler generating longer machine code
       Data-Structures       Programming       GATE 1994
Question 49 Explanation: 
If we use "goto" statements then it leads to structural decomposition of code then it is difficult to verify the programs.
Question 50
Program PARAM (input, output);
 var m, n : integer;
 procedure P (var, x, y : integer);
    var m : integer;
    begin
      m : = 1;
      x : = y + 1
    end;
 procedure Q (x:integer; vary : integer);
    begin
      x:=y+1;
    end;
 begin
    m:=0; P(m,m); write (m);
    n:=0; Q(n*1,n); write (n)
 end 

The value of m, output by the program PARAM is:

A
1, because m is a local variable in P
B
0, because m is the actual parameter that corresponds to the formal parameter in p
C
0, because both x and y are just reference to m, and y has the value 0
D
1, because both x and y are just references to m which gets modified in procedure P
E
none of the above
       Programming       Programming       GATE 1993
Question 50 Explanation: 
0, because global m is not modified, m is just passed to formal argument of P.
Question 51
Program PARAM (input, output);
 var m, n : integer;
 procedure P (var, x, y : integer);
    var m : integer;
    begin
      m : = 1;
      x : = y + 1
    end;
 procedure Q (x:integer; vary : integer);
    begin
      x:=y+1;
    end;
 begin
    m:=0; P(m,m); write (m);
    n:=0; Q(n*1,n); write (n)
 end 

The value of n, output by the program PARAM is:

A
0, because n is the actual parameter corresponding to x in procedure Q.
B
0, because n is the actual parameter to y in procedure Q.
C
1, because n is the actual parameter corresponding to x in procedure Q.
D
1, because n is the actual parameter corresponding to y in procedure Q.
E
none of the above
       Programming       Programming       GATE 1993
Question 51 Explanation: 
0, because n is just passed to formal parameters of Q and no modification in global n.
Question 52
Program PARAM (input, output);
 var m, n : integer;
 procedure P (var, x, y : integer);
    var m : integer;
    begin
      m : = 1;
      x : = y + 1
    end;
 procedure Q (x:integer; vary : integer);
    begin
      x:=y+1;
    end;
 begin
    m:=0; P(m,m); write (m);
    n:=0; Q(n*1,n); write (n)
 end 

What is the scope of m declared in the main program?

A
PARAM, P, Q
B
PARAM, P
C
PARAM, Q
D
P, Q
E
none of the above
       Programming       Programming       GATE 1993
Question 52 Explanation: 
Since m is defined global it is visible inside all the procedures.
Question 53

What does the following code do?

 var a, b : integer;
 begin
    a:=a+b;
    b:=a-b;
    a:=a-b
 end; 
A
exchanges a and b
B
doubles a and stores in b
C
doubles b and stores in a
D
leaves a and b unchanged
E
none of the above
       Programming       Programming       GATE 1993
Question 53 Explanation: 
Exchanges a and b.
Let us consider a=5; b=2
a := a+b = 5+2 = 7
b := a-b = 7-2 = 5
a := a-b = 7-5 = 2
O/P: a=2; b=5
Question 54

An unrestricted use of the "go to" statement is harmful because of which of the following reason(s):

A
It makes it more difficult to verify programs.
B
It makes programs more inefficient.
C
It makes it more difficult to modify existing programs.
D
It results in the compiler generating longer machine code.
       Programming       Programming       GATE 1989
Question 54 Explanation: 
Dijkstra's argued that unrestricted goto statements should abolished from the higher-level languages because they complicated the task of analyzing and verifying the correctness of programs.
Question 55

Study the following program written in a block-structured language:

Var x, y:interger; 
procedure P(n:interger);
begin
     x:=(n+2)/(n-3);
end;

procedure Q 
Var x, y:interger;
begin   
    x:=3;
    y:=4; 
    P(y);
    Write(x)                                __(1)
end;
 
begin
    x:=7;
    y:=8;
    Q; 
Write(x);                                   __(2) 
end.

What will be printed by the write statements marked (1) and (2) in the program if the variables are statically scoped?

A
3, 6
B
6, 7
C
3, 7
D
None of the above.
       Programming       Programming       GATE 1987
Question 55 Explanation: 
First procedure Q is called from the main procedure. Q has local variables x and y with values 3 and 4 respectively. This local variable y (value 4) is being parsed to procedure P during call, and received in local variable n inside procedure P. Now as P does not have any local definition for variable x, it will assign the evaluated value of (n+2)/(n-3), i.e., (4+2)/(4-3)=6 to the global variable x, which was previously 7. After the call of procedure P, procedure Q writes the value of local variable x which is still 3. Lastly, the main procedure writes the value of global variable x, which has been changed to 6 inside procedure P. So, the output will be 3, 6.
Question 56

For the program given below what will be printed by the write statements marked (1) and (2) in the program if the variables are dynamically scoped?

Var x, y:interger; 
procedure P(n:interger);
begin
     x := (n+2)/(n-3);
end;

procedure Q 
Var x, y:interger;
begin   
    x:=3;
    y:=4; 
    P(y);
    Write(x);                                __(1)
end;
 
begin
    x:=7;
    y:=8;
    Q; 
    Write(x);                                __(2)
end.
A
3, 6
B
6, 7
C
3, 7
D
None of the above
       Programming       Programming       GATE 1987
Question 56 Explanation: 
The same sequence of statements will be executed using dynamic scoping. However, as there is no local definition of variable x in procedure P, it will consider the recent definition in the calling sequence, as P is being called from procedure Q, definition of x from Q will be changed to 6 from 3. Now, when Q writes local variables x, 6 will be printed. The write global variable x from main procedure will print 7 (as value of the global variable x has not been changed). So, the output will be 6, 7.
Question 57

The function f is defined as follows:

int f (int n) {
       if (n <= 1) return 1;
       else if (n % 2  ==  0) return f(n/2);
       else return f(3n - 1);
} 
Assuming that arbitrarily large integers can be passed as a parameter to the function, consider the following statements.
(i) The function f terminates for finitely many different values of n ≥ 1.
(ii) The function f terminates for infinitely many different values of n ≥ 1.
(iii) The function f does not terminate for finitely many different values of n ≥ 1.
(iv) The function f does not terminate for infinitely many different values of n ≥ 1.
Which one of the following options is true of the above?

A
(i) and (iii)
B
(i) and (iv)
C
(ii) and (iii)
D
(ii) and (iv)
       Programming       Programming       GATE 2007-IT
Question 57 Explanation: 
The function can be terminated for all the values which can have factor of 2{(2-x)2 == 0}, so (i) is false and (ii) is true.
→ Let n=3, then it is terminated in 2nd iteration.
→ Let n=5, then sequence is 5→14→7→20→10 and it will repeat.
→ Any number with factor 5 and 2 leads to infinite recursion.
So, (iv) is True and (iii) is False.
Question 58

Which one of the choices given below would be printed when the following program is executed?

#include 
struct test {
               int i;
               char *c;
}st[] = {5, "become", 4, "better", 6, "jungle", 8, "ancestor", 7, "brother"};
main ()
{ 
    struct test *p = st;
    p += 1;
    ++p -> c;
    printf("%s,", p++ -> c);
    printf("%c,", *++p -> c);
    printf("%d,", p[0].i);
    printf("%s n", p -> c);
}
A
jungle, n, 8, ncestor
B
etter, u, 6, ungle
C
cetter, k, 6, jungle
D
etter, u, 8, ncestor
       Programming       Programming       GATE 2006-IT
Question 58 Explanation: 
Lets take the part of program,
Line 1 - main ( )
Line 2 - {
Line 3 - struct test *p = st;
Line 4 - p += 1;
Line 5 - ++p → c;
Line 6 - printf("%s", p++→ c);
Line 7 - printf("%c", +++p → c);
Line 8 - printf("%d", p[0].i);
Line 9 - printf("%s\n", p → c);
Line 10 - }
Now,
Line 3: Initially p is pointing to st, i.e., first element of st which is {5, "become"}
Line 4: Now p is pointing to {4, "better"}
Line 5: ++(p → c), since → has higher precedence, so p → c points to 'e' of "better".
Line 6: prints 'enter' and p now points to {6, "jungle"}
Line 7: ***(p → c), since → has higher precedence. So, prints 'u'.
Line 8: p → i, which is 6 so prints '6'.
Line 9: prints 'ungle' since p is pointing to 'u'.
So, output is "enter, u, 6, ungle".
Question 59
Which one of the choices given below would be printed when the following program is executed?
#include 
void swap (int *x, int *y)
{
    static int *temp;
    temp = x;
    x = y;
    y = temp;
}
void printab ()
{
    static int i, a = -3, b = -6;
    i = 0;
    while (i <= 4)
    {
        if ((i++)%2 == 1) continue;
        a = a + i;
        b = b + i;
    }
    swap (&a, &b);
    printf("a =  %d, b = %d\n", a, b);
}
main()
{
    printab();
    printab();
}
A
a = 0, b = 3
a = 0, b = 3
B
a = 3, b = 0
a = 12, b = 9
C
a = 3, b = 6
a = 3, b = 6
D
a = 6, b = 3
a = 15, b = 12
       Programming       Programming       GATE 2006-IT
Question 59 Explanation: 
First of all, the swap function just swaps the pointers inside the function and has no effect on the variable being passed.
Inside print 'a' and 'b' are added to odd integers from 1 to 5, i.e., 1+3+5=9. So, in first call to print ab,
a = -3+9 = 6
b = -6+9 = 3
Static variable have one memory throughout the program run (initialized during program start) and they keep their values across function calls. So during second call to print ab,
a = 6+9 = 15
b = 3+9 = 12
Question 60

Which one of the choices given below would be printed when the following program is executed?

#include 
int a1[] = {6, 7, 8, 18, 34, 67};
int a2[] = {23, 56, 28, 29};
int a3[] = {-12, 27, -31};
int *x[] = {a1, a2, a3};
void print(int *a[])
{
            printf("%d,", a[0][2]);
            printf("%d,", *a[2]);
            printf("%d,", *++a[0]);
            printf("%d,", *(++a)[0]);
            printf("%d/n", a[-1][+1]);
}
main()
{
             print(x);
}
A
8, -12, 7, 23, 8
B
8, 8, 7, 23, 7
C
-12, -12, 27, -31, 23
D
-12, -12, 27, -31, 56
       Programming       Programming       GATE 2006-IT
Question 60 Explanation: 
1) a[0][2] = *(*(a+0)+2)
It returns the value of 3rd element in a1.
First printf print 8.
2) *a[2] = *(*(a+2))
It returns the value of 1st element in a3.
Second printf print -12.
3) *++a[0] = *(++(*(a+0)))
a[0] is pointing to 1st element in a1.
++a[0] - after preincrement performed, now a[0] is pointing to 2nd element in a1.
*++a[0] return the value of 2nd element in a1.
Third printf print 7.
4) *(++a)[0]
++a - after preincrement is performed 'a' is pointing to a2.
(++a)[0] is pointing to 1st element in a2.
*(++a)[0] returns the value of 1st element in a2.
Fourth printf print 23.
5) a[-1][+1] = *(*(a-1)+1)
(a-1) is pointing to a1.
*(a-1) is pointing to the 2nd element in a1, because in 3rd printf already a1 was incremented by 1.
*(a-1)+1 is pointing 3rd element in a1.
*(*(a-1)+1) returns the value of 3rd element in a1, i.e., 8.
Question 61

The following function computes the value of mCn correctly for all legal values m and n (m≥1,n≥0 and m>n)

 int func(int m, int n)
{
    if (E) return 1;
    else return(func(m - 1, n) + func(m - 1, n - 1));
}

In the above function, which of the following is the correct expression for E?

A
(n == 0) || (m == 1)
B
(n == 0) && (m == 1)
C
(n == 0) || (m == n)
D
(n == 0) && (m == n)
       Programming       Programming       GATE 2006-IT
Question 61 Explanation: 
We know that,
mC0 = 1
nCn = 1
Question 62

The following C function takes two ASCII strings and determines whether one is an anagram of the other. An anagram of a string s is a string obtained by permuting the letters in s.

int anagram (char *a, char *b) {
     int count [128], j;
     for (j = 0;  j < 128; j++) count[j] = 0;
     j = 0;
     while (a[j] && b[j]) {
       A;
       B;
}
for (j = 0; j < 128; j++) if (count [j]) return 0;
return 1;
} 

Choose the correct alternative for statements A and B.

A
A : count [a[j]]++ and B : count[b[j]]–
B
A : count [a[j]]++ and B : count[b[j]]++
C
A : count [a[j++]]++ and B : count[b[j]]–
D
A : count [a[j]]++and B : count[b[j++]]–
       Programming       Programming       GATE 2005-IT
Question 62 Explanation: 
A: Increments the count by 1 at each index that is equal to the ASCII value of the alphabet, it is pointing at.
B: Decrements the count by 1 at each index that is equal to the ASCII value of the alphabet it is pointing at. Also it increments the loop counter for next iteration.
If one string is permutation of other, there would have been equal increments and decrements at each index of array, and so count should contain zero at each index, that is what the loop checks at last and if any non-zero elements is found, it returns 0 indicating that strings are not anagram to each other.
Question 63

The following C function takes a singly-linked list of integers as a parameter and rearranges the elements of the list. The list is represented as pointer to a structure. The function is called with the list containing the integers 1, 2, 3, 4, 5, 6, 7 in the given order. What will be the contents of the list after the function completes execution?

struct node {
    int value; 
    struct node *next;
);
void rearrange (struct node *list) 
{
    struct node *p, *q;
    int temp;
    if (!list || !list -> next) 
        return;
    p = list; 
    q = list -> next;
    while (q) 
    {
        temp = p -> value;
        p -> value = q -> value;
        q -> value = temp;
        p = q -> next;
        q = p ? p -> next : 0;
    }
} 
A
1, 2, 3, 4, 5, 6, 7
B
2, 1, 4, 3, 6, 5, 7
C
1, 3, 2, 5, 4, 7, 6
D
2, 3, 4, 5, 6, 7, 1
       Programming       Programming       GATE 2005-IT
Question 63 Explanation: 
It is nothing but a pairwise swapping of the linked list.
Question 64

What is the output printed by the following program?

#include
int f(int n, int k)
{
    if (n == 0)
        return 0;
    else if (n % 2)
        return f(n/2, 2*k) + k;
    else return f(n/2, 2*k) - k;
}
int main ()
{
    printf("%d", f(20, 1));
    return 0;
}
A
5
B
8
C
9
D
20
       Programming       Programming       GATE 2005-IT
Question 64 Explanation: 

Hence, 9 is the answer.
Question 65

Let a be an array containing n integers in increasing order. The following algorithm determines whether there are two distinct numbers in the array whose difference is a specified number S > 0.

i = 0;
j = 1;
while (j < n )
{
    if (E) j++;
    else if (a[j] - a[i] == S) break;
    else i++;
}
if (j < n)
    printf("yes")
else
   printf ("no"); 

Choose the correct expression for E.

A
a[j] – a[i] > S
B
a[j] – a[i] < S
C
a[i] – a[j] < S
D
a[i] – a[j] > S
       Programming       Programming       GATE 2005-IT
Question 65 Explanation: 
For some 'i' if we find that difference of (A[j] - A[i] < S) we increment 'j' to make this difference wider so that it becomes equal to S.
If at times difference becomes greater than S we know that it won't reduce further for same 'i' and so we increment the 'i'.
Question 66

Let x be an integer which can take a value of 0 or 1. The statement if(x = =0) x = 1; else x = 0; is equivalent to which one of the following?

A
x = 1 + x;
B
x = 1 - x;
C
x = x - 1;
D
x = 1 % x;
       Programming       Programming       GATE 2004-IT
Question 66 Explanation: 
x = 1 - x
For x = 0, it gives 1.
For x = 1, it gives 0.
Question 67

A program attempts to generate as many permutations as possible of the string, 'abcd' by pushing the characters a, b, c, d in the same order onto a stack, but it may pop off the top character at any time. Which one of the following strings CANNOT be generated using this program?

A
abcd
B
dcba
C
abad
D
cabd
       Programming       Programming       GATE 2004-IT
Question 67 Explanation: 
A) push 'a' and pop 'a', push 'b' and pop 'b', push 'c' and pop 'c', and finally push 'd' and pop 'd'. Sequence of popped elements will come to abcd.
B) First push abcd, and after that pop one by one. Sequence of popped elements will come to dcba.
C) push abc, and after that pop one by one. Sequence of popped elements will come to cba. Now push 'd' and pop 'd', final sequence comes to cbad.
D) This sequence is not possible because 'a' cannot be popped before 'b' anyhow.
Question 68

What is the output of the following program?

#include <stdio.h>
int funcf (int x);
int funcg (int y);

main()
{
    int x = 5, y = 10, count;
    for (count = 1; count <= 2; ++count)
    {
        y += funcf(x) + funcg(x);
        printf ("%d ", y);
    }
}

funcf(int x)
{
    int y;
    y = funcg(x);
    return (y);
}

funcg(int x)
{
    static int y = 10;
    y += 1;
    return (y+x);
}
A
43 80
B
42 74
C
33 37
D
32 32
       Programming       Programming       GATE 2004-IT
Question 68 Explanation: 
In first iteration:
In first case of funcf, which in turn calls funcg, y becomes 11 and it returns 5+11 = 16.
In second call of funcg, y becomes 12 and it returns 5+12 = 17.
So, in main y is incremented by 16+17 = 33 to become 10+33 = 43.
In second iteration:
y will be incremented by 18+19 = 37 to give 43+37 = 80.
Question 69

Consider the following C program which is supposed to compute the transpose of a given 4 x 4 matrix M. Note that, there is an X in the program which indicates some missing statements. Choose the correct option to replace X in the program.

#include<stdio.h>
#define ROW 4
#define COL 4
int M[ROW][COL] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
main()
{
    int i, j, t;
    for (i = 0; i < 4; ++i)
    {
        X
    }
    for (1 = 0; i < 4; ++i)
        for (j = 0; j < 4; ++j)
            printf ("%d", M[i][j]);
}
A
for(j = 0; j < 4; ++j){
t = M[i][j];
M[i][j] = M[j][i];
M[j][i] = t;
}
B
for(j = 0; j < 4; ++j){
M[i][j] = t;
t = M[j][i];
M[j][i] = M[i][j];
}
C
for(j = i; j < 4; ++j){
t = M[i][j];
M[i][j] = M[j][i];
M[j][i] = t;
}
D
for(j = i; j < 4; ++j){
M[i][j] = t;
t = M[j][i];
M[j][i] = M[i][j];
}
       Programming       Programming       GATE 2004-IT
Question 69 Explanation: 
To compute transpose 'j' needs to be started with 'i'. So, A and B are wrong.
In (D) , given statements is wrong as temporary variable needs to be assigned some value and not vice-versa.
Question 70

Choose the correct option to fill the ?1 and ?2 so that the program prints an input string in reverse order. Assume that the input string is terminated by a new line character.

#include 
void wrt_it (void);
int main (void)
{
    printf("Enter Text"); 
    printf ("n");
    wrt_ it();
    printf ("n");
    return 0;
}
void wrt_it (void)
{
    int c;
    if (?1)
        wrt_it();
    ?2
} 
A
?1 is getchar() ! = ‘\n’
?2 is getchar(c);
B
?1 is (c = getchar()); ! = ‘\n’
?2 is getchar(c);
C
?1 is c! = ‘\n’
?2 is putchar(c);
D
?1 is (c = getchar()) ! = ‘\n’
?2 is putchar(c);
       Programming       Programming       GATE 2004-IT
Question 70 Explanation: 
getchar( ) = reads a single character at a time from the stdin.
putchar( ) = writes a character specified by the argument to stdout.
As getchar( ) and putchar( ), both are needed to read the string and prints its reverse and only option (D) contains both the function. (D) is the answer.
Now coming to the code, wrt_id(void) is calling itself recursively. When \n is encountered, putchar( ) gets executed and prints the last character and then the function returns to its previous call and prints last 2nd character and so on.
Question 71

Consider the following C program:

#include <stdio.h>
typedef struct 
{
    char *a;
    char *b;
} t;
void f1(t s);
void f2(t *p);
main()
{
    static t s = {"A", "B"};
    printf ("%s %sn", s.a, s.b);
    f1(s);
    printf ("%s %sn", s.a, s.b);
    f2(&s);
}
void f1(t s)
{
    s.a = "U";
    s.b = "V";
    printf ("%s %sn", s.a, s.b);
    return;
}
void f2(t *p)
{
    p -> a  = "V";
    p -> b = "W";
    printf("%s %sn", p -> a, p -> b);
    return;
} 
What is the output generated by the program?

A
AB
UV
VW
VW
B
AB
UV
AB
VW
C
AB
UV
UV
VW
D
AB
UV
VW
UV
       Programming       Programming       GATE 2004-IT
Question 71 Explanation: 
→ First print AB.
→ f1 is call by value. The changes applicable only for local from f1. UV is printed.
→ Back in main( ), AB is printed.
→ Then in f2, VW is printed.
Hence, answer is (B).
Question 72
Consider the following code segment
for (int k=0; k<20; k=k+2)
{
if (k % 3 == 1)
system.out.print(k+ " ")
}
What is printed as a result of executing the code segment?
A
4 16
B
4 10 16
C
0 6 12 18
D
1 4 7 10 13 16 19
       Programming-for-Output-Problems       Programming       ISRO CS 2008
Question 72 Explanation: 
for loop starts from 0 to 20 and increments with 2 at each iteration.
k = 0 % 3 = 0
k = 2 % 3 = 2
k = 4 % 3 = 1 // prints 4
k = 6 % 3 = 0
k = 8 % 3 = 2
k = 10 % 3 = 1 // prints 10
k = 12 % 3 = 0
k = 14 % 3 = 2
k = 16 % 3 = 1 // prints 16
k = 18 % 3 = 0
So, Output is 4 10 16
Question 73
What is the value of F(4) using the following procedure:
function F(K : integer)
integer;
begin
if (k<3) then F:=k
else F:=F(k-1)*F(k-2)+F(k-3)
end;
A
5
B
6
C
7
D
8
       Data-Structures       Programming       ISRO CS 2008
Question 73 Explanation: 

F(4) = F(3)*F(2)+F(1) = 5

F(3) = F(2)*F(1)+F(0) = 2

F(2) = 2

F(1) = 1

F(0) = 0
Question 74
In C, what is the effect of a negative number in a field width specifier?
A
the values are displayed right justified
B
the values are displayed centered
C
the values are displayed left justified
D
the values are displayed as negative numbers
       C-Language       Programming       ISRO CS 2008
Question 74 Explanation: 
To left justify, use a negative number in the field width:
Controlling integer width with printf
The %3d specifier is used with integers, and means a minimum width of three spaces, which, by default, will be right-justified:

Left-justifying printf integer output
To left-justify integer output with printf, just add a minus sign ( - ) after the % symbol, like this:

The printf integer zero-fill option
To zero-fill your printf integer output, just add a zero (0) after the % symbol, like this:
Question 75
Consider the following code written in a pass-by-reference language like FORTRAN and these statements about the code.
subroutine swap(ix,iy)
it = ix
L1 : ix = iy
L2 : iy = it
end
ia = 3
ib = 8
call swap (ia, ib+5)
print *, ia, ib
end
S1: The compiler will generate code to allocate a temporary nameless cell, initialize it to 13, and pass the address of the cell to swap
S2: On execution the code will generate a runtime error on line L1
S3: On execution the code will generate a runtime error on line L2
S4: The program will print 13 and 8
S5: The program will print 13 and -2
Exactly the following set of statement(s) is correct:
A
S1 and S2
B
S1 and S4
C
S3
D
S1 and S5
       Programming-in-c++       Programming       ISRO CS 2009
Question 75 Explanation: 
Swap operation perform between the ia and temporary nameless cell, therefore the value of ib is remains unchanged.
Swap (8, 13)
⇒ ia will returns value with 13.
⇒ ib is unchanged, because here we using pass by reference value.
➝ Temporary nameless is initialized to 13.
➝ There is No runtime error.
Question 76
Find the output of the following Java code line System.out.println(math.floor(-7.4))
A
-7
B
-8
C
-7.4
D
-7.0
       Java       Programming       ISRO CS 2011
Question 76 Explanation: 
The method floor gives the largest integer that is less than or equal to the argument.
But here the argument is negative value.
Floor of -7.4 will return the lower limit, i.e. -8.
Question 77
Consider the following pseudocode:
x:=1;
i:=1;
while (x ≤ 500)
begin
x:=2x ;
i:=i+1;
end
What is the value of i at the end of the pseudocode?
A
4
B
5
C
6
D
7
       Data-Structures       Programming       ISRO CS 2011
Question 77 Explanation: 
After completion of first iteration x and i values are : x = 2 and i = 2
After completion of second iteration x and i values are : x = 4 and i = 3
After completion of third iteration x and i values are : x = 16 and i = 4
After completion of fourth iteration x and i values are : x =256 and i = 5
After completion of fifth iteration x and i values are : x = 65536 and i = 6(Condition is false)
Then the value of “i” is 5
Question 78

What is the output of the following C code?

#include

int main()

{

int index;

for(index=1; index<=5; index++)

{

printf("%d", index);

if (index==3)

continue;

}

}

A
1245
B
12345
C
12245
D
12354
       Programming-for-Output-Problems       Programming       ISRO CS 2011
Question 78 Explanation: 
The continue statement is used inside loops. When a continue statement is encountered inside a loop, control jumps to the beginning of the loop for next iteration, skipping the execution of statements inside the body of loop for the current iteration.
In the given code, there are no statements after continue statement , So it won’t effect on the output.
The loop will executes for five iterations,For each iteration it will print corresponding value i.e; 12345.
Question 79
The following steps in a linked list
p = getnode()
info (p) = 10
next (p) = list
list = p
result in which type of operation?
A
pop operation in stack
B
removal of a node
C
inserting a node
D
modifying an existing node
       Data-Structures       Programming       ISRO CS 2013
Question 79 Explanation: 
p = getnode() // Allocating memory for node and starting address of that node will store in the pointer “p”
info (p) = 10 // Storing the value of 10 into the info field of new node
next (p) = list // adding new node to the existing list.
list=p // the starting address of the list will
point to the new node
Question 80
Consider the following C code.
#include
#include
void main()
{
double pi = 3.1415926535;
int a = 1;
int i;
for(i=0; i < 3; i++)
if(a = cos(pi * i/2) )
printf("%d ",1);
else printf("%d ", 0);
}
What would the program print?
A
000
B
010
C
101
D
111
       Programming-for-Output-Problems       Programming       ISRO CS 2013
Question 80 Explanation: 
→The for loop will execute three times for a given i values 0,1,2.
→For a given i = 0:
a = cos(pi * 0/2) [ PI*0 is 0]
a = cos(0) = 1, if condition true and it will print 1
→For a given i = 1
a = cos (pi/2) [pi*1 is pi]
a=cos(1.57075) whose value approximately equal to zero
a = 0, Here the condition is false then else part will execute and it will print 0
→For i = 2
a = cos(pi) [pi*2/2 is nothing but pi]
a = -1, ,Here also condition is true and it will execute if part and it will print “1”
→Finally it will print 101.
Question 81
What is the output of the following Java program?
Class Test
{
public static void main (String [] args)
{
int x = 0;
int y = 0;
for (int z = 0; z < 5; z++)
{
if((++x > 2) || (++y > 2))
{
x++;
}
}
System.out.println( x + " " + y);
}
}
A
8 2
B
8 5
C
8 3
D
5 3
       Java       Programming       ISRO CS 2013
Question 81 Explanation: 
Initial values of x and y is 0
For the given code, the loop will execute 5 times.
Step-1: For z = 0,
The following condition will execute
if((++x > 2) || (++y > 2))
Here pre-increment operation will be performed on x and y. Then x and y values are 1 and the condition false
Similar operation will be performed for z values 1,2,3 and 4
Step-2: For z = 1, Then x and y values become 2 and the condition false.
Step-3: For z = 2, “||” operator is present in the expression, if first operand is true then no need to check the second operand.x value is 3, if condition true and ++y is not evaluated,again “x” value is incremented then x value is “4”.
Perform the step-3 procedure for z value 3 and 4 . Here x value is incremented “4” times. Then the final value of “x” is 8 and “y” is 2.
Question 82
Consider the following pseudocode: x : integer := 1 y : integer := 2 procedure add x := x + y procedure second (P: procedure) x : integer := 2 P() procedure first y : integer := 3 second(add) first() write_integer (x) What does it print if the language uses dynamic scoping with deep binding?
A
2
B
3
C
4
D
5
       Data-Structures       Programming       ISRO CS 2013
Question 82 Explanation: 
Scope rule:
The “current” binding for a given name is the one encountered most recently during execution
Dynamic scoping :
The scope of bindings is determined at run time not at Compile time .
→ For deep binding, the referencing environment is bundled with the subroutine as a closure and passed as an argument. A subroutine closure contains
– A pointer to the subroutine code
– The current set of name-to-object bindings
→ By considering dynamic scoping with deep binding when add is passed into second the environment is x = 1, y = 3 and the x is the global x so it writes 4 into the global x, which is the one picked up by the write_integer.
Question 83

Consider the following pseudo-code fragment, where m is a non-negative integer that has been initialized:

     p = 0;
     k = 0;
     while(k < m)
           p = p + 2k;
           k = k + 1;
     end while

Which of the following is a loop invariant for the while statement?

(Note: a loop variant for a while statement is an assertion that is true each time guard is evaluated during the execution of the while statement).

Options:
A
p = 2k - 1 and 0≤k
B
p = 2k+1 - 1 and 0≤k
C
p = 2k - 1 and 0≤k≤m
D
p = 2k+1 - 1 and 0≤k≤m
       Programming       programming       UGC-NET CS 2018 DEC Paper-2
Question 83 Explanation: 
For k=0, P = 0+20 = 1
k=1, P = 1+21 = 3
k=2, P = 3+22 = 7
k=3, P = 7+23 = 15
Only the option-3 satisfied to the loop variant.
Ex: m=2, The loop will execute for 3 times for k value is 0,1 and 2.
Then options-3 gives P=1, P=3 and P=7 for the k values 0,1 and respectively.
Question 84

Consider the C/C++ function f() given below:

void f(char w [])
{
     int x = strlen(w);  //length of a string
     char c;
     For (int i = 0; i < x; i++)
     {
              c = w[i];
              w[i] = w[x - i - 1];
              w[x - i - 1] = c;
      }
}  

Which of the following is the purpose of f() ?

A
It output the content of the array with the characters rearranged so they are no longer recognized a the words in the original phrase.
B
It output the contents of the array with the characters shifted over by one position.
C
It outputs the contents of the array in the original order.
D
It outputs the contents of the array in the reverse order.
       Programming-in-C/C++       Programming       UGC-NET CS 2018 DEC Paper-2
Question 84 Explanation: 
It outputs the contents of the array in the original order because it swaps pairs of elements at locations (i and x - i - 1) twice.
Question 85

Consider the following two C++ programs P1 and P2 and two statements S1 and S2 about the programs :

    S1: P1 prints out 3
    S2: P2 prints out 4:2

What can you say about the statement S1 and S2 ?

Code:
A
Neither S1 nor S2 is true
B
Only S1 is true
C
Only S2 is true
D
Both S1 and S2 are true
       Programming-in-C++       Programming       UGC-NET CS 2018 DEC Paper-2
Question 85 Explanation: 
The program P1 code consists of function with three parameters integer, pointer and reference variable.
The definition of the function first modifies “i” value by 2 and later by “3” and that modification of the value is automatically reflects in the main program as “c” is reference variable.
The program code P2 will gives the output of 4:5 as the function will take reference variable as parameter and return type also reference object.
Question 86

What does the following java function perform ? (Assume int occupies four bytes of storage)

Public static int f(int a)
{
           //Pre-conditions : a>0 and no overflow/underflow occurs
           int b=0;
           for(int i=0; i<32; i++)
           {
                   b=b <<1;
                   b= b | (a & 1);
                   a = a >>> 1; // This is a logical shift
           }
      Return b;
} 
A
Return the int that represents the number of 0’s in the binary representation of integer a.
B
Return the int that represents the number of 1’s in the binary representation of integer a.
C
Return the int that has the reversed binary representation of integer a.
D
Return the int that has the binary representation of integer a.
       JAVA       Programming       UGC-NET CS 2018 DEC Paper-2
Question 86 Explanation: 
→ Consider the a value is 5.
The initial value of b is 0 and b<<1 means b will get value of 2
b=b|(a&1) which means 2|(5&1) then b will get value “2”
a=a<<1 means value a will reduce to 3
→ Repeat the above procedure for 31 iterations.
→ Iteration-2: b=b<<1 then b is 4 and b=b|(a&1)= 4|(3&1) then b is 5 and a becomes 1
→ Iteration-3: b=b<<1 then b is 10 and b=b|(1&1) = 4|(3&1) then b is 11 and a becomes 0
→ And this procedure will repeat until “i” value is 32.
→ The final value is 11 (Number of 1’s in the result is 2) and the number of 1’s in the input 5 are 2.
Question 87

Consider the following recursive Java function f that takes two long arguments and returns a float value :

public static float f(long m, long n)
{
      float result = (float) m / (float) n;
      if (m < 0 || n < 0)
               return 0⋅0f;
      else
               result += f(m*2, n*3);
      result result;
} 

Which of the following integers best approximates the value of f(2,3) ?

A
0
B
3
C
1
D
2
       JAVA       Programming       UGC-NET CS 2018 DEC Paper-2
Question 88

Consider the following method :

int f(int m, int n, boolean x, boolean y)
{
     int res=0;
     if(m<0) {res=n-m;}
     else if(x || y) {
                             res= -1;
                             if( n==m) { res =1; }
     }
     else {res=n; }
  return res;
} /*end of f */

If P is the minimum number of tests to achieve full statement coverage for f() and Q is the minimum number of tests to achieve full branch coverage for f(), then (P,Q) =

A
(3,4)
B
(3,2)
C
(2,3)
D
(4,3)
       Programming       Programming       UGC-NET CS 2018 DEC Paper-2
Question 88 Explanation: 
→ Code coverage is a measure which describes the degree of which the source code of the program has been tested.
→ Statement coverage is a white box test design technique which involves execution of all the executable statements in the source code at least once. It is used to calculate and measure the number of statements in the source code which can be executed given the requirements.
→ Branch coverage is a testing method, which aims to ensure that each one of the possible branch from each decision point is executed at least once and thereby ensuring that all reachable code is executed.
→ In the branch coverage, every outcome from a code module is tested. For example, if the outcomes are binary, you need to test both True and False outcomes.
Question 89
What will be the output of the following ‘C’ code ?
main( )
{
int x=128;
printf (“\n%d”, 1 + x++);
}
A
128
B
129
C
130
D
131
       Programming       Programming       UGC NET CS 2014 Dec-Paper-2
Question 89 Explanation: 
In this program we are using post increment. Post increment will send the value before updating the value.
printf(“\n%d”, 1 + x++); /* x=128 */
Here, 1+128=129
Question 90
The following ‘C’ statement : int *f [ ] ( ); declares:
A
A function returning a pointer to an array of integers.
B
Array of functions returning pointers to integers.
C
A function returning an array of pointers to integers.
D
An illegal statement.
       Programming       Programming       UGC NET CS 2016 Aug- paper-2
Question 90 Explanation: 
int *f [ ] ( ); It declares array of functions returning pointers to integers.
Question 91
Given i = 0, j = 1, k = –1 x = 0.5, y = 0.0 What is the output of the following expression in C language ?
x * y < i + j || k
A
-1
B
0
C
1
D
2
       Programming       Programming       UGC NET CS 2016 July- paper-2
Question 91 Explanation: 
x * y < i + j || k
Step-1: Evaluate x * y because multiplication has more priority than remaining operators
x * y→ 0
Step-2: i + j is 1
Step-3: (x*y) < (i+j) is 1. Because relational operators only return 1(TRUE) or 0(FALSE).
Step-4: ((x*y) < (i+j)) || k is logical OR operator.
1 || -1 will returns 1.
Note: The precedence is ((x*y) < (i+j)) || k
Question 92
What is the value returned by the function f given below when n = 100?
int f (int n)
{
if (n = = 0) then return n;
else return n + f(n-2);
}
A
2550
B
2556
C
5220
D
5520
       Programming       Programming       UGC NET CS 2016 July- paper-2
Question 92 Explanation: 
Given n=100
Step-1: int f(100)
{ if (100 = = 0) then return 100; /*false*/
else return 100 + f(100-2); /* return 198 */
}
Step-2: int f(98)
{ if (98 = = 0) then return 98; /*false*/
else return 98 + f(96); /* return 194 */
}
Step-3: int f(96)
{ if (96 = = 0) then return 96; /*false*/
else return 96 + f(94); /* return 190 */
}
;
;
Step-final:
int f(0)
{ if (0 = = 0) then return 0; /*TRUE*/
else return 0 + f(0); /* FALSE */
}
Actual process:
The above series is nothing but sum of Arithmetic Progression(A.P)
= 2+4+6+8+ ... +98+100
= n(n+1)
/* It is nothing but sum of even numbers upto 'n' */
= 50*51
= 2550
Question 93
Consider the following program :
#include
main( )
{
int i, inp;
float x, term=1, sum=0;
scanf(“%d %f ”, &inp, &x);
for(i=1; i<=inp; i++)
{
term = term * x/i;
sum = sum + term ;
}
printf(“Result = %f\n”, sum);
}
The program computes the sum of which of the following series?
A
x + x​ 2​ /2 + x​ 3​ /3 + x​ 4​ /4 +...
B
x + x​ 2​ /2! + x​ 3​ /3! + x​ 4​ /4! +...
C
1 + x​ 2​ /2 + x​ 3​ /3 + x​ 4​ /4 +...
D
1 + x​ 2​ /2! + x​ 3​ /3! + x​ 4​ /4! +...
       Programming       Programming       UGC NET CS 2015 Dec- paper-2
Question 93 Explanation: 
In this problem, we have to find series of evaluation.
Let x=5, inp=5
Iteration-1:
for(i=1; i<=inp; i++)
/* condition true 1<=5 */
{
term = term * x/i;
/* (1*5)/1=5. Here, 5 nothing but ‘x’ */
sum = sum + term ; /* 0+5=5 */
}
Iteration-2: Here, ‘i’ becomes 2.
for(i=2; i<=inp; i++)
/* condition true 2<=5 */
{
term = term * x/i;
/* (5*5)/2 is nothing but x​ 2​ /i */
sum = sum + term ; /* 5+12=17 */
}
;;;
;;;
Iteration-5: Here, ‘i’ becomes 5.
for(i=5; i<=inp; i++)
/* condition true 5<=5 */
{
term = term * x/i;
/* (625*5)/5! is nothing but x​ 5​ /i! */
sum = sum + term ;
}
So, Option-B is correct answer.
Question 94
What does the following expression means ? char *(*(*a[N]) ( )) ( );
A
a pointer to a function returning array of n pointers to function returning character pointers.
B
a function return array of N pointers to functions returning pointers to characters
C
an array of n pointers to function returning pointers to characters
D
an array of n pointers to function returning pointers to functions returning pointers to characters.
       Programming       Programming       UGC NET CS 2014 Dec-Paper-2
Question 94 Explanation: 
char *(*(*a[N]) ( )) ( ); /* an array of n pointers to function returning pointers to functions returning pointers to characters */
Question 95
What does the following java function perform ? (Assume int occupies four bytes of storage)
Public static int f(int a)
{
//Pre-conditions : a>0 and no overflow/underflow occurs
int b=0;
for(int i=0; i<32; i++)
{
b=b <<1;
b= b | (a & 1);
a = a >>> 1; // This is a logical shift
}
Return b;
}
A
Return the int that represents the number of 0’s in the binary representation of integer a.
B
Return the int that represents the number of 1’s in the binary representation of integer a.
C
Return the int that has the reversed binary representation of integer a.
D
Return the int that has the binary representation of integer a.
       Programming       Programming       UGC NET CS 2018-DEC Paper-2
Question 95 Explanation: 
→ Consider the a value is 5 .
The initial value of b is 0 and b<<1 means b will get value of 2
b=b|(a&1) which means 2|(5&1) then b will get value “2”
a=a<<1 means value a will reduce to 3
→ Repeat the above procedure for 31 iterations .
→ Iteration-2: b=b<<1 then b is 4 and b=b|(a&1)= 4|(3&1) then b is 5 and a becomes 1
→ Iteration-3: b=b<<1 then b is 10 and b=b|(1&1)= 4|(3&1) then b is 11 and a becomes 0
→ And this procedure will repeat until “i” value is 32.
→ The final value is 11 (Number of 1’s in the result is 2) and the number of 1’s in the input 5 are 2.
Question 96
Consider the following recursive Java function f that takes two long arguments and returns a float value :
public static float f(long m, long n)
{
float result = (float) m / (float) n;
if (m < 0 || n < 0)
return 0⋅0f;
else
result += f(m*2, n*3);
result result;
}
Which of the following integers best approximates the value of f(2,3) ?
A
0
B
3
C
1
D
2
       Programming       Programming       UGC NET CS 2018-DEC Paper-2
Question 96 Explanation: 
public static float f(long m, long n)
{
float result = (float) m / (float) n;
if (m < 0 || n < 0)
return 0⋅0f;
else
result += f(m*2, n*3);
result result;
}
function call→ f(2,3)
→ result=2.0/3.0
=0.666
if condition is false, else will be executed result = 0.666+f(4,9) function call→ f(4,9)
→ result=4.0/9.0
=0.444
result=0.4444+f(8,27)
function call→ f(8,27)
→ result=8.0/27.0
=0.2962
result=0.2962+f(16,54)
function call→ f(16,81)
→ result=16.0/81.0
=0.1975
result=0.1975+f(32,243)
function call→ f(32,243)
→ result= 32.0/243.0
= 0.13168
result=0.13168+f(64,729)
and so on
f(128,2187),f(256,6561),f(512,19683),f(1024,59049),f(2048,177147)
result=0.6666+0.4444+0.2962+0.1975+0.13168+0.08779+0.0390+0.026+0.0173+0.0115
The best approximate value is sum of all the function call result values which is equal 2.
Question 97
Consider the following method :
int f(int m, int n, boolean x, boolean y)
{
int res=0;
if(m<0) {res=n-m;}
else if(x || y) {
res= -1;
if( n==m) { res =1; }
}
else {res=n; }
return res;
} /*end of f */
If P is the minimum number of tests to achieve full statement coverage for f() and Q is the minimum number of tests to achieve full branch coverage for f(), then (P,Q) =
A
(3,4)
B
(3,2)
C
(2,3)
D
(4,3)
       Programming       Programming       UGC NET CS 2018-DEC Paper-2
Question 97 Explanation: 
→ Code coverage is a measure which describes the degree of which the source code of the program has been tested
→ Statement coverage is a white box test design technique which involves execution of all the executable statements in the source code at least once. It is used to calculate and measure the number of statements in the source code which can be executed given the requirements.
→ Branch coverage is a testing method, which aims to ensure that each one of the possible branch from each decision point is executed at least once and thereby ensuring that all reachable code is executed.
→ In the branch coverage, every outcome from a code module is tested. For example, if the outcomes are binary, you need to test both True and False outcomes.
Question 98

What is the output of the following program:

#include

class sample

{

private int a,b’

public: void test ( )

{

a = 100;

b = 200;

}

friend int compute (sample e1);

};

int compute (sample e1)

{

return int (e1.a + e1.b) - 5;

}

Main ( )

{

Sample e;

e.test( );

Cout < < compute(e);

}
A
205
B
300
C
295
D
error
       Programming-in-c++       programming       APPSC-2016-DL-CS
Question 99
Which of the following approach is generally adopted by C++ programming.
A
Top-down
B
Bottom-up
C
Right-left
D
Left-right
       Programming-in-c++       programming       APPSC-2016-DL-CS
Question 99 Explanation: 
Structure/procedure oriented programming languages like C programming language follows top down approach. Whereas object oriented programming languages like C++ and Java programming language follows bottom up approach.
There are 99 questions to complete.