Exercices Corrigés En C – Les fonctions

La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec le langage C et programmation. Nous espérons que ces exercices vous aideront à améliorer vos compétences sur le langage C et programmation. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!

Vous pouvez lire notre tutoriel sur le langage C avant de résoudre les exercices suivants.

 
 

1. Écrire un programme en C pour calculer la somme de deux nombres entiers en utilisant une fonction.

Exemple de sortie:

La somme de 2 et 3 est: 5
#include <stdio.h>

int somme(int, int);  // Déclaration de fonction

int main(void)
{
        int res;
        res = somme(2, 3); // Appel de fonction
        printf("La somme de 2 et 3 est: %d", res);
        return 0;
}

int somme(int a, int b) // Définition de fonction
{
        int s;
        s = a + b;
        return s; // Fonction retournant une valeur
}
 
 

2. Ecrivez un programme en C pour trouver le carré d’un nombre quelconque en utilisant une fonction.

Exemple de sortie:

Entrez n'importe quel nombre: 2
Le carré de 2 est: 4.00
#include <stdio.h>

double mypow(double n)
{
    return (n * n);
}

int main()
{
    int nbr;
    double res;
     
    printf("Entrez n'importe quel nombre: ");
    scanf("%d", &nbr);
	
    res = mypow(nbr);
	
    printf("Le carré de %d est: %.2f", nbr, res); 
    return 0;
}
 
 

3. Écrire un programme en C pour échanger deux nombres à l’aide d’une fonction.

Exemple de sortie:

Entrer le 1er nombre: 3 
Entrée le 2ème nombre: 5 

Avant la permutation: n1 = 3, n2 = 5                                                  
Après la permutation: n1 = 5, n2 = 3
#include <stdio.h>

void swap(int *p,int *q)
{
    int tmp;
    tmp = *p; //tmp stocke la valeur de n1
    *p=*q;   //*p stocke la valeur de *q qui est la valeur de n2
    *q=tmp; //*q stocker la valeur de tmp qui est la valeur de n1
}

int main()
{
    int n1,n2;
   
    printf("Entrer le 1er nombre: ");
    scanf("%d",&n1);
    printf("Entrée le 2ème nombre: ");
    scanf("%d",&n2);	

    printf("Avant la permutation: n1 = %d, n2 = %d",n1,n2);
    //passer l'adresse des deux variables à la fonction.
    swap(&n1,&n2);

    printf("\nAprès la permutation: n1 = %d, n2 = %d",n1,n2);
    return 0;
}
p=&n1 ici p stocke l’adresse de n1, et *p stocke la valeur de n1.
q=&n2 ici q stocke l’adresse de n2, et *q stocke la valeur de n2.
 
 

4. Écrire un programme en C pour vérifier si un nombre donné est pair ou impair à l’aide d’une fonction.

Exemple de sortie:

Entrez n'importe quel nombre: 3
Le nombre saisi est impair.
#include <stdio.h>

/* Si le bit le moins significatif est 1, le nombre est impair
 et 0, le nombre est pair */
int paireImpaire(int nbr)
{   //L'opérateur & effectue une opération de type "AND bit à bit"
    return (nbr & 1);
}

int main()
{
    int nbr;
	     
    printf("Entrez n'importe quel nombre: ");
    scanf("%d", &nbr);

    /* Si la fonction paireImpaire() renvoie 1 alors 
    le nombre est impair */
    if(paireImpaire(nbr))
    {
        printf("Le nombre saisi est impair.");
    }
    else
    {
        printf("Le nombre saisi est pair.");
    }
    return 0;
}
 
 

5. Ecrivez un programme en C pour trouver la somme de la série 1!/1+2!/2+3!/3+4!/4+5!/5 en utilisant une fonction.

Exemple de sortie:

La somme de la série est: 34
#include <stdio.h>

int fact(int n)
{
        int num=0,f=1;
        while(num<=n-1)
        {
            f = f + f * num;
            num++;
        }
    return f;
}

void main()
{
    int sum;
    sum = fact(1)/1+fact(2)/2+fact(3)/3+fact(4)/4+fact(5)/5;   
    printf("La somme de la série est: %d",sum);
}
 
 

6. Écrire une fonction qui affiche si le nombre passé en paramètre est pair ou impair.

Exemple de sortie:

3 est impair.
2 est pair.
#include <stdio.h>
 
void paireOuImpaire(int N) 
{ 
    // Trouver le reste
    int reste = N % 2; 
  
    if (reste == 0){ 
        printf("Paire"); 
    } else{ 
        printf("Impaire"); 
    } 
} 

int main() 
{ 
    // Appel à la fonction
    paireOuImpaire(N); 
  
    return 0; 
}
 
 

7. Écrire une fonction qui permet de calculer la valeur absolue d’un nombre donné (en utilisant l'opérateur ternaire ?: ).
#include <stdio.h>
 
int nbrAbsolue(int n)
{
    return n < 0 ? -n : n;
}

int main() 
{ 
    // Appel à la fonction
    int n = nbrAbsolue(-5);     // n = 5
  
    return 0; 
}
 
 

8. Ecrivez un programme en C pour convertir un nombre décimal en un nombre binaire en utilisant une fonction.

Exemple de sortie:

Entrez un nombre décimal: 85 
Le nombre binaire est: 1010101
#include <stdio.h>

long convertoBin(int d)
{
    long b=0,remainder,f=1;
    while(d != 0)
    {
         remainder = d % 2;
         b = b + remainder * f;
         f = f * 10;
         d = d / 2;
    }
    return b;
}

int main()
{
    long b;
    int d;
  
    printf("Entrez un nombre décimal: ");
    scanf("%d",&d);
    b = convertoBin(d);
    printf("\nLe nombre binaire est: %ld",b);

    return 0;
}
 
 

9. Ecrivez un programme en C pour vérifier si un nombre est un nombre premier ou non en utilisant une fonction.

Exemple de sortie:

Entrez un nombre: 5 
Le nombre 5 est un nombre premier.
#include <stdio.h>

int nbrPremier(int nbr)
{
    int i=2;
    while(i<=nbr/2)
    {
        if(nbr%i==0)
            return 0;
        else
            i++;
    }
    return 1;
}


int main()
{
    int nbr,res;
	
    printf("Entrez un nombre: ");
    scanf("%d",&nbr);
	
    res = nbrPremier(nbr);
	
    if(res == 1)
        printf("Le nombre %d est un nombre premier.",nbr);
    else
        printf("Le nombre %d n'est pas un nombre premier.",nbr);
    return 0;
}
 
 

10. Ecrivez un programme en C pour trouver le plus grand élément d'un tableau à l'aide de la fonction.

Exemple de sortie:

Entrer le nombre d'éléments à stocker dans le tableau: 5
Saisir les 5 éléments dans le tableau:
tab[0] : 5
tab[1] : 2
tab[2] : 1
tab[3] : 9
tab[4] : 0

Le plus grand élément du tableau est: 9
#include <stdio.h>

int trouverMax(int []);
int n;

int main()
{
    int tab[100],max,i;

    printf("Entrer le nombre d'éléments à stocker dans le tableau:");
    scanf("%d",&n);
   
    printf("Saisir les %d éléments dans le tableau:\n",n);
    for(i=0;i < n;i++)
    {
	    printf("tab[%d] : ",i);
	    scanf("%d",&tab[i]);
    }
    max = trouverMax(tab);

    printf("Le plus grand élément du tableau est: %d",max);
    return 0;
}

int trouverMax(int tab[])
{
    int i=1,max;
    max=tab[0];
    while(i < n)
    {
      if(max < tab[i])
           max=tab[i];
      i++;
    }
    return max;
}
 
 

11. Ecrivez un programme en C pour vérifier les nombres Armstrong à l'aide d'une fonction.

Lorsque la somme du cube des chiffres d'un nombre est égale à ce nombre, on parle de nombre d'Armstrong. Par exemple, 153 est un nombre d'Armstrong car 153 = 13 + 53 + 33.

Exemple de sortie:

Entrez un nombre quelconque: 371 
Le 371 est un nombre Armstrong.
#include <stdio.h>

int nbrArmstrong(int nbr) 
{
    int d, sum, n;
    sum = 0;
    n = nbr;
    while(n!=0)  
    {
        // trouver le dernier chiffre du nombre 
        d = n % 10;  
        //calculer le cube du dernier chiffre et l'ajouter à la somme
        sum += d * d * d;  
        n = n/10;  
    }
    return (nbr == sum);
}

int main()
{
    int nbr;

    printf("Entrez un nombre quelconque: ");
    scanf("%d", &nbr);
     
    if(nbrArmstrong(nbr))
    {
        printf("Le %d est un nombre Armstrong.", nbr);
    }
    else
    {
        printf("Le %d n'est pas un nombre Armstrong.", nbr);
    }
    return 0;
}
 
 

12. Ecrivez un programme en C pour vérifier les nombres Parfait à l'aide d'une fonction.

Un nombre parfait est un nombre entier positif qui est égal à la somme de ses diviseurs positifs, à l'exclusion du nombre lui-même. Exemple:

Exemple de sortie:

Entrez un nombre quelconque: 371                                               
Le 371 n'est pas un nombre parfait.
#include <stdio.h>

int nbrParfait(int nbr) 
{
    int i, sum, n;
    sum = 0;
    n = nbr;
    for(i=1; i < n; i++)  
    {  
        // Si i est un diviseur de nbr
        if(n%i == 0)  
        {  
            sum += i;  
        }  
    }
    return (nbr == sum);
}

int main()
{
    int nbr;

    printf("Entrez un nombre quelconque: ");
    scanf("%d", &nbr);
     
    if(nbrParfait(nbr))
    {
        printf("Le %d est un nombre parfait.", nbr);
    }
    else
    {
        printf("Le %d n'est pas un nombre parfait.", nbr);
    }
    return 0;
}
 
 

13. Ecrivez un programme en C pour afficher tous les nombres parfaits dans un intervalle donné à l'aide d'une fonction.

Exemple de sortie:

Entrez le min: 1
Entrez le max: 100

Les nombres parfaits entre 1 et 100 sont:                                      
6 28  
 
#include <stdio.h>

int nbrParfait(int nbr)
{
    int i, sum;
    sum = 0;
    for(i=1; i < nbr; i++)
    {
        if(nbr % i == 0)
        {
            sum += i;
        }
    }
    if(sum == nbr)
        return 1;
    else
        return 0;
}

void plageNbrParfait(int start, int end)
{
    // Afficher les nombres parfaits du début à la fin
    while(start <= end)
    {
        if(nbrParfait(start))
        {
            printf(" %d  ", start);
        }
        start++;
    }   
}

int main()
{
    int start, end;
   
    printf("Entrez le min: ");
    scanf("%d", &start);
    printf("Entrez le max: ");
    scanf("%d", &end);
    printf("Les nombres parfaits entre %d et %d sont:\n", start, end);
    plageNbrParfait(start, end);
    return 0;
}
 
 

14. Ecrivez un programme en C pour vérifier si deux chaînes données sont des anagrammes à l'aide d'une fonction.

Deux chaînes forment un anagramme, si et seulement si elles contiennent le même nombre de caractères, l'ordre des caractères peu importe. Par exemple:

  • abc et cba sont des anagrammes.
  • créatif et réactif sont également des anagrammes

Exemple de sortie:

Entrez la première chaîne: abc
Entrer la deuxième chaîne: cba

abc et cba sont des anagrammes.
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h>  
 
int isAnagram(char *str1, char *str2)
{
    int str1Chr[256] = {0}, str2Chr[256] = {0};
    int i;
    // vérifier si les deux chaînes sont égales en longueur
    if(strlen(str1) != strlen(str2))
    {
        return 0;
    }
    //compter la fréquence des caractères dans str1 
    for(i = 0; str1[i] != '\0'; i++)
    {
        str1Chr[str1[i]]++;
    }
    //compter la fréquence des caractères dans str2 
    for(i = 0; str2[i] != '\0'; i++)
    {
        str2Chr[str2[i]]++;
    }
    //comparer le nombre de caractères des deux chaînes 
    for(i = 0; i < 256; i++)
    {
        if(str1Chr[i] != str2Chr[i])
            return 0;
    }
    return 1;
}

int main()
{
    char str1[100], str2[100];
    printf("Entrez la première chaîne: ");
    fgets(str1, sizeof str1, stdin);
    printf("Entrer la deuxième chaîne: ");
    fgets(str2, sizeof str2, stdin);
 
    if(isAnagram(str1, str2) == 1)
    {
       str1[strlen(str1)-1] = '\0';
       str2[strlen(str2)-1] = '\0';
       printf("%s et %s sont des anagrammes.",str1,str2);
    } 
    else 
    {
       str1[strlen(str1)-1] = '\0';
       str2[strlen(str2)-1] = '\0';
       printf("%s et %s ne sont pas des anagrammes.",str1,str2);
    }
    return 0;
}
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *