Il y a beaucoup de solutions possibles à ce problème.
Voici probablement la solution la plus modulaire.
#include <stdio.h> main() { /* Prototypes des fonctions appelées */ void TRIANGLE(int LIGNES); /* Variables locales */ int N; /* Traitements */ printf("Introduire le nombre de lignes N : "); scanf("%d", &N); TRIANGLE(N); return 0; } void TRIANGLE(int LIGNES) { /* Prototypes des fonctions appelées */ void LIGNEC(int P); /* Variables locales */ int P; /* Traitements */ for (P=0; P<LIGNES; P++) LIGNEC(P); } void LIGNEC(int P) { /* Prototypes des fonctions appelées */ double C(int P, int Q); /* Variables locales */ int Q; /* Traitements */ for (Q=0; Q<=P; Q++) printf("%6.0f", C(P,Q)); printf("\n"); } double C(int P, int Q) { /* Prototypes des fonctions appelées */ double FACT(int N); /* Traitements */ return FACT(P)/(FACT(Q)*FACT(P-Q)); } double FACT(int N) { . . . }