DATA STRUCTURE & ALGORITHM
1. The minimum number of temporary variables needed to swap the contents of two variables is:
(a) 1 (b) 2
(c) 3 (d) 0
2. The purpose of the following program fragment:
b= s + b;
s= b – s;
b= b – s;
where s, b are two integers is to:
(a) transfer the contents of s to b
(b) transfer the contents of b to s
(c) exchange (swap) the contents of s and b
(d) negate the contents of s and b
3. Consider the function:
find (int x, int y)
{ return((x < y) ? 0: (x – y)); }
Let a, b be two non-negative integers. The call find(a, find(a, b)) can be used to find the:
(a) maximum of a, b (b) positive difference of a, b
(c) sum of a, b (d) minimum of a, b
4. The following:
printf (“%f”, 9/5);
prints:
(a) 1.8 (b) 1.0
(c) 2.0 (d) none of the above
5. If an integer needs two bytes of storage then maximum value of unsigned integer is:
(a) 216–1 (b) 215–1
1
(c) 216 (d) 215
6. If an integer needs two bytes of storage then maximum value of a signed integer is:
(a) 216–1 (b) 215–1
(c) 216 (d) 215
7. printf(“%d”, printf(“tim”));
(a) results in a syntax error (b) outputs tim3
(c) outputs garbage (d) prints tim and terminates abruptly
8. If a b c is the input then the following program fragment results in:
char x, y, z;
printf(“%d”, scanf(“%c %c %c”, &x, &y, &z));
results in:
(a) a syntax error (b) a fatal error
(c) segmentation violation (d) printing of 3
9. Consider the statements:
putchar(getchar( ) );
putchar(getchar( ) );
if a
b
is the input, the output will be:
(a) an error message (b) this can’t be the input
(c) ab (d) a b
10. Let a, b be two positive integers, which of the following options correctly relates / and %?
(a) b= (a/b) * b + a%b (b) b= (a%b) * b + a/b
(c) a= (a/b) * b + a%b (d) a= (a%b) * b + a/b
2
11. Consider the following program fragment:
char c= ‘a’
while (c++ ≤ ‘z’)
putchar (xxx);
if the required output is abcdefghijklmnopqrstuvwxyz then xxx should be:
(a) c (b) c++
(c) c–1 (d) –c
12. If y is of integer type then the expressions:
3 * (y–8)/9 and (y–8)/9 * 3
(a) must yield same value (b) must yield different values
(c) may or may not yield the same value (d) none of the above
13. If y is the integer type then the expressions:
3 * (y–8)/9 and (y–8)/9 * 3
yield the same value if :
(a) y is an even number (b) y is an odd number
(c) y–8 is an integral multiple of 9 (d) y–8 is an integral multiple of 3
14. The statement:
if (my Ptr != NULL)
*myPtr= NULL;
else
*myPtr= NULL;
has the same effect as the statement(s):
(a) if (myPtr) * myPtr= NULL; (b) *myPtr= NULL;
else *myPtr= NULL;
(c) if (!myPtr) *myPtr= NULL; (d) All of the above
else *myPtr= NULL;
15. The following code fragment:
int x, y= 2, z, a;
x= (y* =2) + (z= a =y);
3
printf(“%d”, x);
(a) prints 8
(b) prints 6
(c) prints 6 or 8 depending on the compiler implementation
(d) is syntactically wrong
16. If n has the value 3 then the output of statement:
printf(“5d %d”, n++, ++n);
(a) is 3 5 (b) is 4 5
(c) is 4 4 (d) is implementation dependent
17. x– = y+1; does the same as:
(a) x= x –y +1 (b) x= – x –y – 1
(c) x= –x + y +1 (d) x= x – y – 1
18. The expression 5 – 2 – 3 * 5 – 2 will evaluate to 18, if:
(a) – is left associative and * has precedence over –
(b) – is right associative and * has precedence over –
(c) – is right associative and – has precedence over *
(d) – is left associative and – has precedence over *
19. printf (“%c”, 100);
(a) prints 100 (b) prints the ASCII equivalent of 100
(c) prints garbage (d) none of the above
20. The program fragment:
int i= 263;
putchar (i)
(a) prints 263 (b) prints the ASCII equivalent of 263
(c) rings the bell (d) prints garbage