0% found this document useful (0 votes)
258 views

Data Structure & Algorithm Solutions

The document contains 20 questions about data structures and algorithms with their solutions. Some key points covered include: 1. The minimum number of temporary variables needed to swap two variables is 0. 2. The purpose of the code fragment "b= s + b; s= b – s; b= b – s;" is to exchange/swap the contents of variables s and b. 3. The call "find(a, find(a, b))" can be used to find the minimum of numbers a and b. 4. Printing integers with floating point format specifiers like "%f" can result in garbage values.

Uploaded by

ergrehge
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
258 views

Data Structure & Algorithm Solutions

The document contains 20 questions about data structures and algorithms with their solutions. Some key points covered include: 1. The minimum number of temporary variables needed to swap two variables is 0. 2. The purpose of the code fragment "b= s + b; s= b – s; b= b – s;" is to exchange/swap the contents of variables s and b. 3. The call "find(a, find(a, b))" can be used to find the minimum of numbers a and b. 4. Printing integers with floating point format specifiers like "%f" can result in garbage values.

Uploaded by

ergrehge
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

DATA STRUCTURE & ALGORITHM

Solutions

1. The minimum number of temporary variables needed to swap the contents of two variables is:

(a) 1 (b) 2
(c) 3 (d) 0

Solution: Option (d)

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

Solution: Option (c)

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

Solution: Option (d)

4. The following:
printf (“%f”, 9/5);

prints:

1
(a) 1.8 (b) 1.0
(c) 2.0 (d) none of the above

Solution: Option (d)

Explanations:
9/5 yeilds integer 1. Printing 1 as a floating point number prints garbage.

5. If an integer needs two bytes of storage then maximum value of unsigned integer is:

(a) 216–1 (b) 215–1


(c) 216 (d) 215

Solution: Option (a)

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

Solution: Option (b)

Explanation:
In signed magnitude form, one bit is dedicated to store the sign. (e.g., 1 for negative and 0,
otherwise). Only the remaining 15 bits are available to store the magnitude. Hence the answer.

7. printf(“%d”, printf(“tim”));

(a) results in a syntax error (b) outputs tim3


(c) outputs garbage (d) prints tim and terminates abruptly

Solution: Option (b)

Explanation:
Any function (including main( )), returns a value to the calling environment. In case of the printf,
it is the characters it printed. So, the output will be tim3 (since it printed the three characters a, b,
c).

8. If a b c is the input then the following program fragment results in:

2
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

Solution: Option (d)

Explanation:
The scanf function returns the number of successful matches i.e., 3 in this case.

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

Solution: Option (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

Solution: Option (b)

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

3
Solution: Option (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

Solution: Option (c)

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

Solution: Option (c)

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;

Solution: Option (d)

15. The following code fragment:


int x, y= 2, z, a;
x= (y* =2) + (z= a =y);
printf(“%d”, x);

4
(a) prints 8
(b) prints 6
(c) prints 6 or 8 depending on the compiler implementation
(d) is syntactically wrong

Solution: Option (c)

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

Solution: Option (d)

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

Solution: Option (d)

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 *

Solution: Option (c)

Explanation:
5 – 2 – 3 * 5 – 2 will yield 18, if it is treated as (5 – (2 – 3)) * (5 – 2) i.e. if – has precedence over
* and if it associates from the right.

19. printf (“%c”, 100);

(a) prints 100 (b) prints the ASCII equivalent of 100


(c) prints garbage (d) none of the above

5
Solution: Option (b)

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

Solution: Option (c)

Explanation:
263 in binary form is 100000111. If one tries to print an integer as a character, only the last 8 bits
will be considered, the rest chopped off. So, in this case the ASCII value of 0000111 (i.e.,
decimal 7) will be printed. Look in the ASCII table. It is ringing the bell!

You might also like