El resultado de ejecutar el siguiente programa en C es ________.
# includeint 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); }
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