Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

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

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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


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);
}




Alternate Solution :
g-set1_a64



This solution is contributed by parul sharma

Quiz of this Question

My Personal Notes arrow_drop_up
Last Updated : 31 Aug, 2021
Like Article
Save Article
Similar Reads