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; }
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; }