Trouver le factoriel d'un nombre en C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à écrire un programme C pour trouver le factoriel d'un nombre. Nous utiliserons un algorithme simple pour calculer le factoriel à l'aide d'une boucle.

Note: Vous devez créer le fichier ~/project/main.c vous-même pour pratiquer la programmation et apprendre à le compiler et à l'exécuter à l'aide de gcc.

cd ~/project
## créer main.c
touch main.c
## compiler main.c
gcc main.c -o main
## exécuter main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/math_functions("Math Functions") c/FunctionsGroup -.-> c/recursion("Recursion") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123240{{"Trouver le factoriel d'un nombre en C"}} c/for_loop -.-> lab-123240{{"Trouver le factoriel d'un nombre en C"}} c/function_declaration -.-> lab-123240{{"Trouver le factoriel d'un nombre en C"}} c/math_functions -.-> lab-123240{{"Trouver le factoriel d'un nombre en C"}} c/recursion -.-> lab-123240{{"Trouver le factoriel d'un nombre en C"}} c/user_input -.-> lab-123240{{"Trouver le factoriel d'un nombre en C"}} c/output -.-> lab-123240{{"Trouver le factoriel d'un nombre en C"}} end

Comprendre le factoriel

Le factoriel (noté n!) d'un nombre (disons n) est le produit de tous les nombres avant n avec le nombre lui-même. On peut dire que :

!n = n *!(n - 1)

Par exemple :

!6 = 6 * 5 * 4 * 3 * 2 * 1 = 720
!12 = 12 * 11 * 10 * 9 * 8 * 7 *!6 = 479 001 600

Points importants :

  • Le factoriel de 0 est 1.
  • Le factoriel de nombres négatifs n'existe pas.

Écrire l'algorithme

Voici les étapes à suivre pour le programme de factoriel :

  1. Déclarer les variables n et fact=1. n est le nombre dont on veut calculer le factoriel et fact est la variable dans laquelle on stockera le résultat.
  2. Lire l'entrée de l'utilisateur dans n.
  3. Initialiser l'itérateur de boucle i=1 et exécuter la boucle jusqu'à i<=n
  4. Faire les opérations suivantes à chaque itération de la boucle :
    • fact=fact*i
    • i++
  5. Afficher fact.

Écrire le programme C

Dans ce programme, nous utiliserons une boucle for pour trouver le factoriel d'un nombre.

#include<stdio.h>
int main()
{
    int n,i;
    long int fact=1;
    printf("Entrez le nombre : ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        fact=fact*i;    // calcul du factoriel
    }
    printf("Le factoriel de %d est %ld",n,fact);
    return 0;
}

Tester le programme

Essayons de tester notre programme en l'exécutant et en vérifiant la sortie.

Entrez le nombre : 5
Le factoriel de 5 est 120

Programme final

Voici le programme final qui trouve le factoriel d'un nombre en utilisant une boucle for :

#include<stdio.h>
int main()
{
    int n,i;
    long int fact=1;
    printf("Entrez le nombre : ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        fact=fact*i;    // calcul du factoriel
    }
    printf("Le factoriel de %d est %ld",n,fact);
    return 0;
}

Récapitulatif

Dans ce laboratoire, nous avons appris à écrire un programme C pour trouver le factoriel d'un nombre en utilisant une boucle for. Nous avons utilisé un algorithme simple et suivi une procédure étape par étape pour atteindre notre objectif. Le programme prend une entrée de l'utilisateur, calcule le factoriel à l'aide d'une boucle et affiche le résultat à l'écran. Nous avons abordé certains points importants tels que l'initialisation des variables et les limites des types de données int et long int.