📜  门| GATE-CS-2017(Set 1)|第64章

📅  最后修改于: 2021-06-28 19:30:16             🧑  作者: Mango

执行以下C程序的输出是________。

# 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答案: (A)
说明:数字:5-0101、4-0100、3-0011、2-0010、1-0001
计数1s:2,3,5,6,7

总计:2 + 3 + 5 + 6 + 7 = 23

总数(i)= 23

因此,选项A是正确的

签出运行代码并附带注释:

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

替代解决方案:
g-set1_a64

该解决方案由parul sharma贡献
这个问题的测验