#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.