#include <stdio.h>
main()
{
/* Prototypes des fonctions appelées */
double EXP1(double X, int N);
void EXP2(double *X, int N);
/* Variables locales */
double A;
int B;
/* Traitements */
printf("Introduire un réel X : ");
scanf("%lf", &A);
printf("Introduire l'exposant positif N : ");
scanf("%d", &B);
/* a */
printf("EXP1(%.2f , %d) = %f\n", A, B, EXP1(A,B));
/* b */
/* Comme la valeur initiale de A est perdue à l'appel */
/* de EXP2, il faut partager l'affichage si on veut */
/* afficher la valeur de A avant et après l'appel ! */
printf("EXP2(%.2f , %d) = ", A, B);
EXP2(&A, B);
printf("%f\n", A);
return 0;
}
double EXP1(double X, int N)
{
double RES;
for (RES=1.0; N>0; N--)
RES *= X;
return RES;
}
void EXP2(double *X, int N)
{
double AIDE;
for (AIDE=1.0; N>0; N--)
AIDE *= *X;
*X = AIDE;
}
Remarque: Cette solution de EXP2 respecte automatiquement le cas où N=0.