GATE | GATE-CS-2017 (Set 1) | Question 64
The output of executing the following C program is ________.
# includeint total(int v) { static int count = 0; while (v) { count += v & 1; v >>= 1; } return count; } void main() { static int x = 0; int i = 5; for (; i> 0; i--) { x = x + total(i); } printf (“%d\n”, x) ; }
(A) 23
(B) 24
(C) 26
(D) 27
Answer: (A)
Explanation: Digits : 5-0101, 4-0100, 3-0011, 2-0010, 1-0001
Countof 1s : 2, 3, 5, 6, 7
Total: 2+3+5+6+7 = 23
total(i)=23
Therefore, option A is correct
Check out the running code with comments:
#include<stdio.h> int total( int v) { static int count = 0; while (v) { count += v&1; v >>= 1; } //This count can be used to see number of 1s returned //for every number i //printf("%d", count); return count; } void main() { static int x=0; int i=5; for (; i>0; i--) { //total gets added everytime with total number //of digits in the given number i x = x + total(i); } printf ( "%d\n" , x); } |
This solution is contributed by parul sharma
Quiz of this Question
Please Login to comment...