PUERTA | GATE-CS-2017 (Conjunto 1) | Pregunta 64

El resultado de ejecutar el siguiente programa en C es ________.

# 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

Respuesta: (A)
Explicación: Dígitos: 5-0101, 4-0100, 3-0011, 2-0010, 1-0001
Cuenta de 1s: 2, 3 , 5, 6, 7

Total: 2+3+5+6+7 = 23

total(i)=23

Por lo tanto, la opción A es correcta .

Echa un vistazo al código en ejecución con comentarios:

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

Solución alternativa:
g-set1_a64

Esta solución es aportada por parul sharma
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *