C Language | Set 2

Following questions have been asked in GATE CS exam. 1. Consider the following C program segment:
 `char` `p[20]; ``char` `*s = ``"string"``; ``int` `length = ``strlen``(s); ``int` `i; ``for` `(i = 0; i < length; i++) ``     ``p[i] = s[length â€” i]; ``printf``(``"%s"``,p); `

The output of the program is (GATE CS 2004) a) gnirts b) gnirt c) string d) no output is printed Answer(d) Let us consider below line inside the for loop p[i] = s[length â€” i]; For i = 0, p[i] will be s[6 â€” 0] and s[6] is ‘\0’ So p[0] becomes â€˜\0â€™. It doesn’t matter what comes in p[1], p[2]….. as P[0] will not change for i >0. Nothing is printed if we print a string with first character ‘\0’

2. Consider the following C function
 `void` `swap (``int` `a, ``int` `b) ``{ ``   ``int` `temp; ``   ``temp = a; ``   ``a = b; ``   ``b = temp; ``} `

In order to exchange the values of two variables x and y. (GATE CS 2004) a) call swap (x, y) b) call swap (&x, &y) c) swap (x,y) cannot be used as it does not return any value d) swap (x,y) cannot be used as the parameters are passed by value Answer(d) Why a, b and c are incorrect? a) call swap (x, y) will not cause any effect on x and y as parameters are passed by value. b) call swap (&x, &y) will no work as function swap() expects values not addresses (or pointers). c) swap (x, y) cannot be used but reason given is not correct.

3. Consider the following C function:
 `int` `f(``int` `n) ``{ ``   ``static` `int` `i = 1; ``   ``if` `(n >= 5) ``      ``return` `n; ``   ``n = n+i; ``   ``i++; ``   ``return` `f(n); ``} `

The value returned by f(1) is (GATE CS 2004) a) 5 b) 6 c) 7 d) 8 Answer (c) Since i is static, first line of f() is executed only once.
```Execution of f(1)
i = 1
n = 2
i = 2
Call f(2)
i = 2
n = 4
i = 3
Call f(4)
i = 3
n = 7
i = 4
Call f(7)
since n >= 5 return n(7)
```

4. Consider the following program fragment for reversing the digits in a given integer to obtain a new integer. Let n = D1D2…Dm
 `int` `n, rev; ``rev = 0; ``while` `(n > 0)  ``{ ``   ``rev = rev*10 + n%10; ``   ``n = n/10; ``} `

The loop invariant condition at the end of the ith iteration is:(GATE CS 2004) a) n = D1D2….Dm-i and rev = DmDm-1…Dm-i+1 b) n = Dm-i+1…Dm-1Dm and rev = Dm-1….D2D1 c) n ≠ rev d) n = D1D2….Dm and rev = DmDm-1…D2D1 Answer (a)

5. Consider the following C program
 `main() ``{ ``   ``int` `x, y, m, n; ``   ``scanf` `(``"%d %d"``, &x, &y); ``   ``/* x > 0 and y > 0 */``   ``m = x; n = y; ``   ``while` `(m != n) ``   ``{  ``      ``if``(m>n) ``         ``m = m - n; ``      ``else``         ``n = n - m; ``   ``} ``   ``printf``(``"%d"``, n); ``} `

The program computes (GATE CS 2004) a) x + y using repeated subtraction b) x mod y using repeated subtraction c) the greatest common divisor of x and y d) the least common multiple of x and y Answer(c) This is an implementation of Euclid’s algorithm to find GCD

Previous
Next