#include #include long long factorielle(int n) { if (n < 0) return -1; long long res = 1; for (int i = 2; i <= n; i++) { res *= i; } return res; } int main() { struct { int n; long long attendu; } tests[] = { {0, 1}, {1, 1}, {2, 2}, {3, 6}, {5, 120}, {10, 3628800}, {12, 479001600}, {20, 2432902008176640000LL}, }; int nb_tests = sizeof(tests) / sizeof(tests[0]); int passes = 0, echoues = 0; for (int i = 0; i < nb_tests; i++) { long long res = factorielle(tests[i].n); if (res == tests[i].attendu) { printf("OK factorielle(%d) = %lld\n", tests[i].n, res); passes++; } else { printf("FAIL factorielle(%d) = %lld (attendu %lld)\n", tests[i].n, res, tests[i].attendu); echoues++; } } printf("\n%d passes, %d echoues sur %d tests\n", passes, echoues, nb_tests); return echoues > 0 ? EXIT_FAILURE : EXIT_SUCCESS; }