📜  门| GATE-CS-2017(套装1)|第 64 题

📅  最后修改于: 2021-09-24 05:43:09             🧑  作者: 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) ; 
} 

(一) 23
(乙) 24
(三) 26
(四) 27答案:(一)
说明:数字:5-0101、4-0100、3-0011、2-0010、1-0001
计数 1 : 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 提供
这个问题的测验