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
Please Login to comment...