C - Les fonctions - Exercices đŸ’ȘđŸ»

Voici une feuille complÚte de 15 exercices progressifs sur le passage de paramÚtres par valeur, par référence, et les types transmis par adresse (tableaux, chaßnes).

    5ttr 6ttr
  • DĂ©couverte

Objectifs

Ces exercices te permettent de :

  • comprendre la diffĂ©rence entre passage par valeur et par rĂ©fĂ©rence ;
  • utiliser & et * correctement ;
  • modifier des variables dans une fonction ;
  • manipuler des tableaux et chaĂźnes passĂ©s par adresse.

Effet d’un paramĂštre passĂ© par valeur

Écris une fonction incrementer(int x) qui augmente x de 1. Dans main, montre que la variable originale ne change pas.


Effet d’un paramĂštre passĂ© par rĂ©fĂ©rence

Écris une fonction incrementerRef qui augmente une variable de 1. Dans main, montre que la variable originale est modifiĂ©e.


Doubler une valeur (référence)

Écris une fonction doubler qui multiplie une variable par 2. Test :

x = 7  → doubler →  x = 14

Mettre un nombre à zéro (référence)

Écris une fonction raz qui met une variable à 0.


Comparer deux entiers (valeur)

Écris une fonction maximum qui renvoie le plus grand. Montre qu’elle ne modifie pas les variables envoyĂ©es.


Comparer deux entiers (référenc

MĂȘme exercice que le prĂ©cĂ©dent, mais cette fois ta fonction trier doit mettre dans a le minimum et dans b le maximum.

Exemple : a = 12, b = 5 → a = 5, b = 12.


Échanger deux valeurs (swap)

Écris une fonction echanger.

AprĂšs l’appel, les valeurs doivent ĂȘtre inversĂ©es.

Test : a = 5, b = 8 → a = 8, b = 5.


Mettre en majuscule le premier caractùre d’une chaüne

Écris une fonction majPremier qui transforme texte[0] en majuscule. Test : "alice" → "Alice".


Compter les voyelles dans une chaĂźne

Écris une fonction int compterVoyelles. Appelle-la depuis main et affiche le rĂ©sultat.


Remplacer tous les ‘a’ par des ‘@’ dans une chaüne

Écris une fonction remplacer qui modifie directement la chaüne. Test : "banane" → "b@n@ne".


Calculer la somme d’un tableau

Écris une fonction int somme qui renvoie la somme des cases. Montre dans main que le tableau n’est pas modifiĂ© (passage par rĂ©fĂ©rence mais lecture seulement).


Mettre toutes les cases d’un tableau Ă  zĂ©ro

Écris une fonction vider qui met toutes les valeurs à 0. Test : {4, 1, 9} → {0, 0, 0}.


Trouver la plus grande valeur et renvoyer sa position

Écris une fonction indexMax. Elle renvoie l’indice de la plus grande valeur.

Test : {4, 9, 7} → retourne 1.

⚠ Le tableau est passĂ© par rĂ©fĂ©rence, mais tu ne dois rien modifier.


Échanger deux cases d’un tableau

Écris une fonction :

void echangerCases(int tab[], int i, int j);

Elle Ă©change les cases tab[i] et tab[j]. Test : tab = {1, 2, 3, 4}, i = 1, j = 3 → {1, 4, 3, 2}.


À retenir

  • Les variables simples sont passĂ©es par valeur.
  • Les pointeurs, tableaux et chaĂźnes sont passĂ©s par rĂ©fĂ©rence.
  • Le passage par rĂ©fĂ©rence permet de modifier la variable originale.
  • Toutes les fonctions avec des int *, char[] ou int tab[] agissent directement sur les donnĂ©es du main.

Pour aller plus loin