## Program

 Question 1

 A (i) and (iii) B (i) and (iv) C (ii) and (iii) D (ii) and (iv)
Programming       Program       Gate 2007-IT
Question 1 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 2

 A jungle, n, 8, ncestor B etter, u, 6, ungle C cetter, k, 6, jungle D etter, u, 8, ncestor
Programming       Program       Gate 2006-IT
Question 2 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 3

 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       Program       Gate 2006-IT
Question 3 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 4

 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       Program       Gate 2006-IT
Question 4 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 5

 A (n == 0) || (m == 1) B (n == 0) && (m == 1) C (n == 0) || (m == n) D (n == 0) && (m == n)
Programming       Program       Gate 2006-IT
Question 5 Explanation:
We know that,
mC0 = 1
nCn = 1
 Question 6

 A 89 B 90 C 91 D 92
Programming       Program       Gate-1998
Question 6 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 7

 A 5 B 25 C 36 D 42
Programming       Program       Gate-1998
Question 7 Explanation:
If it is call by reference then answer is 42.
If it is call by value then answer is 36.
 Question 8
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       Program       Gate-1989
Question 8 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 9

 A 3, 6 B 6, 7 C 3, 7 D None of the above.
Programming       Program       GATE-1987
Question 9 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 10

 A 3, 6 B 6, 7 C 3, 7 D None of the above
Programming       Program       GATE-1987
Question 10 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.
There are 10 questions to complete.