 GFG App
Open App Browser
Continue

# GATE | GATE-CS-2017 (Set 1) | Question 64

The output of executing the following C program is ________.

```# include

int 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

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 ` ` `  `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

My Personal Notes arrow_drop_up