PUERTA | PUERTA CS 2020 | Pregunta 58

Considere las siguientes funciones de C.

int tob (int b, int* arr) {
    int i;
    for (i = 0; b>0; i++)  {
        if (b%2)  arr [i] = 1;
        else      arr[i] = 0;
        b = b/2;
    }
    return (i);
}
   
  
int pp(int a, int b)  {
    int  arr[20];
    int i, tot = 1, ex, len;
    ex = a;
    len = tob(b, arr);
    for (i=0; i<len ; i++) {
         if (arr[i] ==1)
             tot = tot * ex;
         ex= ex*ex;
    }
return (tot) ;
}

El valor devuelto por pp(3,4) es ________ .

Nota: esta pregunta era de tipo numérico.
(A) 81
(B) 64
(C) 100
(D) 49

Respuesta: (A)
Explicación: las funciones dadas calculan la potencia de un elemento, por lo que imprimirá 3^4 = 81.

#include <stdio.h> 
  
int tob (int b, int* arr);
int pp(int a, int b);
  
int tob (int b, int* arr) {
    int i;
    for (i = 0; b>0; i++)  {
        if (b%2)  arr [i] = 1;
        else      arr[i] = 0;
        b = b/2;
    }
    return (i);
}
   
  
int pp(int a, int b)  {
    int  arr[20];
    int i, tot = 1, ex, len;
    ex = a;
    len = tob(b, arr);
    for (i=0; i<len ; i++) {
         if (arr[i] ==1)
             tot = tot * ex;
         ex= ex*ex;
    }
return (tot) ;
}
  
  
int main() 
 { 
     
  printf("%d", pp(3, 4)); 
  return 0; 
 } 

Código: https://ide.geeksforgeeks.org/snkT2QVCkm
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 *