Buenas tardes. Dejo una posible solución de los ejercicios de la entrega CU00549F del tutorial de programador en lenguaje C desde cero.
EJERCICIO Nº1
Escribe una función que use un bucle for para calcular la potencia de un número al que denominaremos base sobre otro número al que denominaremos exponente, ambos recibidos como parámetros.
Ejemplo: la función recibe como base el 4 y como exponente el 3. El resultado devuelto debe ser el resultado de multiplicar la base por sí misma 3 veces, en este ejemplo 4*4*4 = 64.
Escribe un programa donde se pida al usuario base y exponente y se muestre el resultado de calcular la potencia (base elevada al exponente). Tras esto, se debe pedir al usuario si quiere repetir con otros datos o no (s/n). En caso de que el usuario elija s se le volverá a pedir base y exponente, y en caso contrario el programa debe finalizar.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int potencia(int base, int exponente);
int main() {
int base;
int exponente;
char respuesta = 's';
while (respuesta=='s' || respuesta=='S') {
printf("Introduce la base: ");
scanf("%d",&base);
printf("Introduce el exponenete: ");
scanf("%d",&exponente);
printf("%d elevado a %d es: %d\n\n", base, exponente, potencia(base,exponente));
printf("Quiere repetir con otros datos o no (s/n)?: ");
scanf("%*c%c%*c", &respuesta);
}
return 0;
}
int potencia(int base, int exponente){
int resultado=1;
int i;
for(i=0; i<exponente; i++){
resultado=resultado*base;
}
return resultado;
}
EJERCICIO Nº 2
Estudia el siguiente código y responde a las preguntas:
#include <stdio.h>
#include <stdlib.h>
// Ejercicios curso C aprenderaprogramar.com
void stars2 (int n) {
int i;
for (i=1; i<=n; ++i) {
printf ("*");
}
printf ("\n");
}
int main (void) {
int a;
a=10;
stars2 (20);
stars2 (a);
stars2 (a+2);
return (0);
}
a) ¿Cuántas funciones se declaran en este código? ¿Es main una función?
Se declaran 2 funciónes. Sí, main es la función principal del código.
b) Explica cuántos parámetros reciben y de qué tipo son los parámetros para cada una de las funciones que existan en este código.
La función stars2(int n) recibe un parámetro cuyo argumento es de tipo int. La función main() no recibe ningún parámetro, su parámetro está vacío (void).
c) ¿Cuántas veces se invoca la función stars2 en el código? ¿Qué ocurre con cada una de esas invocaciones? ¿Cuál es el valor devuelto por la función stars2?
La función stars2 se invoca 3 veces en la función main. En la primera invocación se le pasa un parámetro con valor 20, en la segunda se le pasa un parámetro con valor una variable de tipo int (es el tipo que espera la función stars2) y tiene un valor 10. En la tercera invocación se le pasa un parámetro con valor 12 (a+2). Según que valor recibe la función stars2 mediante el parámetro de tipo int tantas veces se repite el bucle for dentro de la misma. La función stars2 no devuelve ningún valor porque es un precedimiento (procedure). En su declaración no se define ningún valor para devolver, sino "void" lo que quere decir que no devolverá nada dicha función.
d) ¿Qué ocurre si escribimos stars2(0)? ¿Por qué?
Cuando a la función stars2 se le pasa un parámetro con valor 0 no se imprimirá nada, sólo una nueva línea (\n). Esto ocurre porque el parámetro sirve para condición de la salida del bucle for en la función stars2. Pero como el valor iniciar del bucle es i=1 y si la condición es: "i<=0" ya no entraría en el bucle con lo cual no se ejecutarán las intrucciones en el mismo.