400 Exercices Corrigés En C – Partie 17
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.
181. Ecrivez un programme en C pour trouver la ligne avec le plus grand nombre de 1.
Exemple de sortie:
Le tableau 2D donné est : 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 L'index de la ligne avec le maximum de 1 est: 2
#include <stdio.h> #include <stdbool.h> //Fonction qui renvoie l'index de la ligne avec le plus grand nombre de 1 int indexLigneAvecUn(bool matrice[4][4]) { int index = -1 ; int maxCount = 0 ; /* Visitez chaque ligne. Compter le nombre de 1. Si le nombre est supérieur au maxCount, actualiser le maxCount et stocker l'index de la ligne actuelle dans la variable index. */ for(int i = 0; i < 4; i++){ int count = 0; for(int j = 0; j < 4; j++){ if(matrice[i][j] == 1){ count++ ; } } if(count > maxCount){ maxCount = count; index = i ; } } return index; } int main() { bool matrice[4][4] = {{0, 0, 1, 1}, {0, 1, 1, 1}, {1, 1, 1, 1}, {0, 0, 0, 0}}; int index = indexLigneAvecUn(matrice); printf("L'index de la ligne avec le maximum de 1 est: %d",index); return 0; }
182. Écrire un programme en C pour afficher tous les éléments uniques dans un tableau non trié.
Exemple de sortie:
Le tableau donné est: 2 1 7 3 7 3 2 4 2 6 2 Les éléments uniques du tableau donné sont: 2 1 7 3 4 6
#include <stdio.h> int main() { int tab[] = {2, 1, 7, 3, 7, 3, 2, 4, 2, 6, 2}; int n = sizeof(tab) / sizeof(int); int i, j; // Afficher le tableau d'origine printf("Le tableau donné est: "); for (i = 0; i < n; i++) { printf("%d ", tab[i]); } printf("\n"); printf("Les éléments uniques du tableau donné sont: "); for (i = 0; i < n; i++) { // Itérer dans le tableau pour trouver les éléments uniques for (j = 0; j < i; j++) { // Si un doublon est trouvé, quitter la boucle if (tab[i] == tab[j]) break; } // Si 'i' atteint 'j', l'élément courant est unique, il faut donc l'afficher. if (i == j) { printf("%d ", tab[i]); } } return 0; }
183. Ecrivez un programme en C pour trouver la somme des éléments du triangle supérieur d'une matrice.
Exemple de sortie:
Le tableau donné est : 1 2 3 4 5 6 7 8 9 Les éléments à additionner de la matrice triangulaire supérieure sont: 2 3 6 La somme des éléments de la matrice triangulaire supérieure est: 11
#include <stdio.h> int main() { int L, C, n, i, j, s = 0; int matrice[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; L = C = n = 3; int i, j; // Afficher le tableau original printf("Le tableau donné est : \n"); for (i = 0; i < L; i++) { for (j = 0; j < C; j++) { printf("%d ", matrice[i][j]); } printf("\n"); } printf("Les éléments à additionner de la matrice triangulaire supérieure sont:"); for (i = 0; i < L; i++) { for (j = 0; j < C; j++) { if (i < j) { printf("%d ", matrice[i][j]); // Additionner les éléments de la matrice triangulaire supérieure s += matrice[i][j]; } } } printf("\nLa somme des éléments de la matrice triangulaire supérieure est: %d", s); return 0; }
184. Ecrivez un programme en C pour trouver la somme des éléments du triangle inférieurs d'une matrice.
Exemple de sortie:
Le tableau donné est : 1 2 3 4 5 6 7 8 9 Les éléments à additionner de la matrice triangulaire inférieur sont: 4 7 8 La somme des éléments de la matrice triangulaire inférieur est: 19
#include <stdio.h> int main() { int L, C, n, i, j, s = 0; int matrice[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; L = C = n = 3; int i, j; // Afficher le tableau original printf("Le tableau donné est : \n"); for (i = 0; i < L; i++) { for (j = 0; j < C; j++) { printf("%d ", matrice[i][j]); } printf("\n"); } printf("Les éléments à additionner de la matrice triangulaire inférieur sont:"); for (i = 0; i < L; i++) { for (j = 0; j < C; j++) { if (i > j) { printf("%d ", matrice[i][j]); // Additionner les éléments de la matrice triangulaire inférieur s += matrice[i][j]; } } } printf("\nLa somme des éléments de la matrice triangulaire inférieur est: %d", s); return 0; }
185. Écrire un programme en C pour générer des permutations aléatoires dans un tableau.
Exemple de sortie:
Le tableau donné est: 0 1 2 3 4 5 6 7 8 9 Les éléments du tableau sont mélangés: 8 4 0 2 9 5 7 1 3 6
#include <stdio.h> #include <stdlib.h> // mélanger le tableau void rand_tab(int *tab, size_t n) { if (n > 1) { size_t i; for (i = 0; i < n - 1; i++) { size_t j = i + rand() / (RAND_MAX / (n - i) + 1); int t = tab[j]; tab[j] = tab[i]; tab[i] = t; } } } // afficher les éléments du tableau void afficher_tab(int *tab, size_t n){ for (int i = 0; i < n; i++) printf("%d ", tab[i]); } int main() { int tab[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; printf("Le tableau donné est:"); afficher_tab(tab, 10); rand_tab(tab, 10); printf("\nLes éléments du tableau sont mélangés:"); afficher_tab(tab, 10); return 0; }
186. Ecrivez un programme en C pour trouver le nombre qui se répète le plus dans un tableau donné.
Exemple de sortie:
Le tableau donné est: 0 1 2 3 4 5 5 5 5 5 Le nombre qui se répète le plus est 5
#include <stdio.h> int repNbr(int tab[], int n) { int i, j, max, count, maxCount = 0; /* La fréquence de chaque élément est calculée et vérifiée. Si elle est supérieure au nombre maximal d'éléments trouvés jusque-là, elle est mise à jour. */ for(i = 0; i< n; i++) { count = 1; //Boucle For pour vérifier les éléments dupliqués for(j = i+1; j < n; j++) { if(tab[j] == tab[i]) { count++; //Incrémenter le compteur /* Si le nombre d'éléments actuels est supérieur à maxCount, alors actualiser max */ if(count > maxCount) { max = tab[j]; } } } } return max; } int main() { int tab[] = {2, 3, 3, 5, 3, 4, 1, 7, 7, 7, 7}; int n = sizeof(tab) / sizeof(tab[0]); int i; // Afficher le tableau d'origine printf("Le tableau donné est: \n"); for (i = 0; i < n; i++) { printf("%d ", tab[i]); } printf("\n"); printf("Le nombre qui se répète le plus est: %d", repNbr(tab, n)); return 0; }
187. Ecrivez un programme en C pour trouver une paire avec la différence donnée.
Exemple de sortie:
Le tableau donné est : 1 8 2 3 4 La différence donnée est: 4 La paire est: (4, 8)
#include <stdio.h> #include <stdbool.h> // Fonction pour trouver la paire avec la différence donnée bool findPair(int tab[], int size, int diff) { int i = 0; int j = 1; while (i < size && j < size) { if (i != j && tab[j] - tab[i] == diff) { printf("La paire est: (%d, %d)", tab[i], tab[j]); return true; } else if (tab[j] - tab[i] < diff) { j++; // Incrémenter j pour vérifier l'élément suivant } else { i++; // Incrémenter i pour vérifier l'élément suivant } } printf("Aucune paire n'a été trouvée dans le tableau donné."); return false; } int main() { int tab[] = {1, 8, 2, 3, 4}; // Calculer la taille du tableau int size = sizeof(tab) / sizeof(tab[0]); int diff = 4; int i; // Afficher le tableau original printf("Le tableau donné est: \n"); for(i = 0; i < size; i++) { printf("%d ", tab[i]); } printf("\n"); printf("La différence donnée est: %d\n", diff); findPair(tab, size, diff); return 0; }
188. Ecrivez un programme en C pour séparer les 0 et les 1 dans un tableau.
Exemple de sortie:
Le tableau donné est : 0 1 0 1 1 0 Le tableau après séparation est: 0 0 0 1 1 1
#include <stdio.h> void sep0et1(int tab[], int size) { int gauche = 0, droite = size-1; while (gauche < droite) { /* Incrémenter l'index de gauche tant que l'on voit 0 à gauche */ while (tab[gauche] == 0 && gauche < droite) gauche++; /* Décrémenter l'index de droite tant que l'on voit 1 à droite */ while (tab[droite] == 1 && gauche < droite) droite--; /* Si la gauche est plus petite que la droite, il y a un 1 à gauche et un 0 à droite. Échangez-les. */ if (gauche < droite) { tab[gauche] = 0; tab[droite] = 1; gauche++; droite--; } } } int main(){ int tab[] = {0, 1, 0, 1, 1, 0}; int tab_size = 6, i = 0; sep0et1(tab, tab_size); printf("Le tableau séparé est: "); for (i = 0; i < 6; i++) printf("%d ", tab[i]); getchar(); return 0; }
189. Écrire un programme en C pour séparer les éléments pairs et impairs dans un tableau.
Exemple de sortie:
Le tableau donné est : 3 4 5 2 1 6 8 Le tableau après séparation est: 2 4 6 8 1 3 5
#include <stdio.h> // Fonction permettant d'échanger deux éléments void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } // Fonction pour séparer les nombres pairs et impairs dans un tableau void paireImpaire(int tab[], int size) { int gauche = 0, droite = size - 1; // Séparation des nombres pairs et impairs while (gauche < droite) { // Déplacer l'index gauche jusqu'à ce qu'un nombre impair soit trouvé while (tab[gauche] % 2 == 0 && gauche < droite) gauche++; // Déplacer l'indice_droit jusqu'à ce qu'un nombre pair soit trouvé while (tab[droite] % 2 == 1 && gauche < droite) droite--; // Échanger les éléments pairs et impairs trouvés if (gauche < droite) { swap(&tab[gauche], &tab[droite]); gauche++; droite--; } } } int main() { int tab[] = {3, 4, 5, 2, 1, 6, 8}; int tab_size = sizeof(tab) / sizeof(tab[0]); int i = 0; // Afficher le tableau original printf("Le tableau donné est: \n"); for(i = 0; i < tab_size; i++) { printf("%d ", tab[i]); } printf("\n"); paireImpaire(tab, tab_size); printf("Le tableau après séparation est: "); for (i = 0; i < tab_size; i++) printf("%d ", tab[i]); return 0; }
190. Écrire un programme en C pour concaténer deux tableaux d'entiers donnés.
Exemple de sortie:
([1, 2, 3, 4, 5],[6, 7, 8, 9, 10]) -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
#include <stdio.h> int main() { int tab3_size, i, j, tab1_size = 5, tab2_size = 5; int tab1[5] = { 1, 2, 3, 4, 5 }; int tab2[5] = { 6, 7, 8, 9, 10 }; // Déclaration de la taille du tableau 3 tab3_size = tab1_size + tab2_size; int tab3[tab3_size]; // copier les éléments du tableau 1 dans le tableau 3 for (i = 0; i < tab1_size; i++) { tab3[i] = tab1[i]; } // copier les éléments du tableau 2 dans le tableau 3 for (i = 0, j = tab1_size; j < tab3_size && i < tab2_size; i++, j++) { tab3[j] = tab2[i]; } // Éléments du tableau après merge for (i = 0; i < tab3_size; i++) { printf("%d ", tab3[i]); } return 0; }
191. Écrire un programme en C permettant de saisir 10 nombres et de les stocker dans un tableau appelé myTab, puis de les afficher.
Exemple de sortie:
Entrer un nombre: 6 Entrer un nombre: 3 Entrer un nombre: 8 Entrer un nombre: 1 Entrer un nombre: 5 Entrer un nombre: 9 Entrer un nombre: 4 Entrer un nombre: 2 Entrer un nombre: 6 Entrer un nombre: 0 6 3 8 1 5 9 4 2 6 0
#include <stdio.h> int main() { int tab[10],i; for(i=0; i<10; i++){ printf("Entrer un nombre:"); scanf("%d",&tab[i]); } for(i=0 ; i<10; i++) printf("%d ",tab[i]); return 0; }
192. Écrire un programme en C permettant d'entrer 10 notes et d'afficher la moyenne de ces notes.
Exemple de sortie:
Entrer un nombre: 6 Entrer un nombre: 3 Entrer un nombre: 8 Entrer un nombre: 1 Entrer un nombre: 5 Entrer un nombre: 9 Entrer un nombre: 4 Entrer un nombre: 2 Entrer un nombre: 6 Entrer un nombre: 0 La moyenne est: 4,4
#include <stdio.h> int main() { float notes[10],sum=0; int i; for(i=0; i<10; i++){ printf("Entrer un nombre:"); scanf("%f",¬es[i]); sum = sum + notes[i]; } printf("La moyenne est:%f", sum/10); return 0; }
193. Écrire un programme en C permettant la saisi de 10 nombres et l'affichage du maximum de ces nombres.
Exemple de sortie:
Entrer un nombre: 6 Entrer un nombre: 3 Entrer un nombre: 8 Entrer un nombre: 1 Entrer un nombre: 5 Entrer un nombre: 7 Entrer un nombre: 4 Entrer un nombre: 2 Entrer un nombre: 6 Entrer un nombre: 0 Le maximum est: 8
#include <stdio.h> int main() { int max,i,tab[10]; printf("Entrer un nombre:"); scanf("%d",&tab[0]); max = tab[0]; for(i=1; i<10; i++){ printf("Entrer un nombre:"); scanf("%d",&tab[i]); if(tab[i] > max) max = tab[i]; } printf("Le maximum est: %d",max); return 0; }
194. Ecrivez un programme en C qui permet d'entrer 10 nombres dans un tableau, et de calculer le nombre d'occurrences d'un élément X dans ce tableau. Où X est entré par l'utilisateur.
Exemple de sortie:
Entrer un nombre: 6 Entrer un nombre: 3 Entrer un nombre: 8 Entrer un nombre: 6 Entrer un nombre: 5 Entrer un nombre: 7 Entrer un nombre: 4 Entrer un nombre: 6 Entrer un nombre: 6 Entrer un nombre: 0 Entrer Le nombre recherché: 6 Nombre d'occurences de 6 est 4
#include <stdio.h> int main() { int tab[10],nbrOcc=0,i,nbrRech; for(i=0; i<10; i++){ printf("Entrer un nombre:"); scanf("%d",&tab[i]); } printf("Entrer Le nombre recherché:"); scanf("%d",&nbrRech); for(i=0; i<10; i++){ if (tab[i] == nbrRech) nbrOcc++; } printf("Nombre d'occurences de %d est %d",nbrRech,nbrOcc); return 0; }
195. Ecrivez un programme en C pour entrer 10 entiers dans un tableau et trier ce tableau dans un ordre croissant. Affichez ensuite ce tableau après l'avoir trié.
Exemple de sortie:
Entrer un nombre: 8 Entrer un nombre: 1 Entrer un nombre: 5 Entrer un nombre: 6 Entrer un nombre: 3 Entrer un nombre: 2 Entrer un nombre: 4 Entrer un nombre: 7 Entrer un nombre: 9 Entrer un nombre: 0 Tableau trié: 0 1 2 3 4 5 6 7 8 9
#include <stdio.h> int main() { int tab[10],tmp,i,j; for(i=0; i<10; i++){ printf("Entrer un nombre:"); scanf("%d",&tab[i]); } for(i=0; i<9; i++){ for(j=i+1; j<10; j++){ if(tab[j] < tab[i]) { tmp = tab[i]; tab[i] = tab[j]; tab[j] = tmp; } } } for(i=0; i<10; i++) printf("%d\t",tab[i]); return 0; }
196. Ecrivez un programme en C qui permet de saisir 5 nombres dans un tableau. Comptez ensuite le nombre d'éléments pairs et impairs.
Exemple de sortie:
Entrer un nombre: 1 Entrer un nombre: 3 Entrer un nombre: 2 Entrer un nombre: 6 Entrer un nombre: 9 Total des éléments pairs: 2 Total des éléments impaires: 3
#include <stdio.h> int main() { int i,pair=0,impair=0,tab[5]; for(i=0; i<5; i++){ printf("Entrer un nombre:"); scanf("%d",&tab[i]); } for(i=0; i<5; i++){ if(tab[i]%2==0) pair++; else impair++; } printf("Total des éléments pairs: %d\n",pair); printf("Total des éléments impaires: %d",impair); return 0; }
197. Ecrivez un programme en C qui demande d'entrer un tableau Tab de 10 nombres, et de placer les éléments pairs dans un tableau Tab1 et les éléments impairs dans un tableau Tab2. Affichez ensuite Tab1 et Tab2.
Exemple de sortie:
Tab : 1 5 2 4 9 3 3 6 8 7 Tab1: 2 4 6 8 Tab2: 1 5 9 3 3 7
#include <stdio.h> int main() { int tab[10],tab1[10],tab2[10],i,j=0,k=0; //Stocker les éléments dans le tableau original for(i=0; i < 10; i++) { printf("Entrer un nombre:"); scanf("%d",&tab[i]); } for(i=0; i < 10; i++) { if(tab[i]%2 == 0){ //Stocker les éléments paires tab1[j] = tab[i]; j++; } else{ //Stocker les éléments impaires tab2[k] = tab[i]; k++; } } //Afficher le tableau 1 for(i=0; i < j ; i++){ printf("%d ",tab1[i]); } printf("\t"); //Afficher le tableau 2 for(i=0; i < k; i++){ printf("%d ",tab2[i]); } return 0; }
198. Écrire un programme en C qui lit un caractère et détermine si c'est une lettre ou non, dans le cas d'une lettre, il indique si c'est une minuscule ou une majuscule.
Exemple de sortie:
Donnez une lettre: a C'est une lettre Minuscule Donnez une lettre: A C'est une lettre Majuscule Donnez une lettre: 5 C'est pas une lettre!
#include <stdio.h> int main() { char l; printf("Donnez une lettre:"); scanf("%c",&l); if (l >= 65 && l <= 90){ printf("C'est une lettre Majuscule"); } else { if (l >= 97 && l <= 122) printf("C'est une lettre Minuscule"); else printf("C'est pas une lettre!"); } return 0; }
199. Écrire un programme en C qui compte le nombre d'éléments dupliqués dans un tableau de nombres entiers saisi par l'utilisateur.
Exemple de sortie:
Entrer un nombre: 5 Entrer un nombre: 1 Entrer un nombre: 5 Entrer un nombre: 6 Entrer un nombre: 3 Entrer un nombre: 5 Entrer un nombre: 4 Entrer un nombre: 7 Entrer un nombre: 9 Entrer un nombre: 5 Nombre total d'éléments dupliqués est: 4
#include <stdio.h> int main() { int tab[10],i,j,compteur=0; for(i=0; i<10; i++){ printf("Enter un nombre:"); scanf("%d",&tab[i]); } for(i=0; i<10; i++){ for(j=i+1; j<10; j++){ if (tab[i] == tab[j]){ compteur++; } } } printf("Nombre total d'éléments dupliqués est: %d",compteur) ; return 0; }
200. Écrire un programme en C qui permet d'entrer 10 nombres entiers et de savoir si ces nombres entiers sont successifs ou non.
Exemple de sortie:
0 1 3 4 5 6 7 8 9 Les nombres ne sont pas successives 11 12 13 Les nombres sont successives
#include <stdio.h> int main() { int check=0,i,tab[10]; printf("Entrer un nombre:"); scanf("%d",&tab[0]); for(i=1; i<=9; i++){ printf("Entrer un nombre:"); scanf("%d",&tab[i]); if (tab[i] < tab[i-1]){ check=1; } } if (check==0) printf("Les nombres sont successives"); else printf("Les nombres ne sont pas successives"); return 0; }
201. Écrire un programme en C qui place les zéro vers la fin du tableau, en maintenant l'ordre des éléments.
Exemple de sortie:
Entrée: 8 0 6 0 1 6 0 0 2 3 Sortie: 8 6 1 6 2 3 0 0 0 0
#include <stdio.h> int main() { int tab[10],tmp,i,j; for(i=0; i<10; i++) { scanf("%d", &tab[i]); } for(i=0; i<10; i++) printf("%d ",tab[i]); for(i=0; i<9; i++) { if(tab[i]==0) { j = i + 1; while(tab[j]==0 && j<9) { j++; } tmp = tab[i]; tab[i]= tab[j]; tab[j]= tmp; } } printf("\n"); for(i=0; i<10; i++) printf("%d ",tab[i]); return 0; }