400 Exercices Corrigés En C – Partie 13
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.
141. Écrire un programme C pour afficher une chaîne de caractères dans l’ordre inverse.
Exemple de sortie:
Entrez la chaîne à inverser: Hello La chaîne inversée est: olleH
#include <stdio.h> #include <string.h> void main() { char str[100], tmp; int l, g, d, i; printf("Entrez la chaîne à inverser: "); scanf("%s", str); // Calculer la longueur de la chaîne l = strlen(str); // Initialisation les indices de gauche et de droite pour la permutation g = 0; d = l - 1; // Boucle pour la permutation des caractères de gauche à droite for(i = g; i < d; i++) { tmp = str[i]; str[i] = str[d]; str[d] = tmp; d--; } printf("La chaîne inversée est: %s", str); }
142. Écrire un programme C pour trouver la longueur d'une chaîne de caractères sans utiliser la fonction strlen().
Exemple de sortie:
Entrez la chaîne de caractères: Hello La longueur de la chaîne de caractères est: 5
#include <stdio.h> void main() { char str[50]; int i, l = 0; printf("Entrez la chaîne de caractères:"); scanf("%s", str); // Boucle pour compter les caractères dans la chaîne for (i = 0; str[i] != '\0'; i++) { l++; } printf("La longueur de la chaîne de caractères est: %d", l); }
143. Écrire un programme en C pour lire n nombre de valeurs dans un tableau et les afficher dans l'ordre inverse.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 3 Entrer les 3 éléments dans le tableau: tab[0]: 8 tab[1]: 4 tab[2]: 5 Les valeurs stockées dans le tableau sont: 8 4 5 Les valeurs stockées dans le tableau en sens inverse sont: 5 4 8
#include <stdio.h> int main() { int i, n, a[100]; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", &n); printf("Entrer les %d éléments dans le tableau:\n", n); for (i = 0; i < n; i++) { printf("tab[%d]: ", i); scanf("%d", &a[i]); } printf("\nLes valeurs stockées dans le tableau sont: "); for (i = 0; i < n; i++) { printf("% 5d", a[i]); //Afficher chaque élément du tableau } printf("\nLes valeurs stockées dans le tableau en sens inverse sont:\n"); for (i = n - 1; i >= 0; i--) { printf("% 5d", a[i]); //Afficher chaque élément en ordre inverse } return 0; }
144. Écrire un programme en C pour copier les éléments d'un tableau dans un autre tableau.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 3 Entrer les 3 éléments dans le tableau: tab[0]: 8 tab[1]: 4 tab[2]: 5 Les valeurs stockées dans le tableau sont: 8 4 5 Les éléments copiés dans le 2ème tableau sont: 8 4 5
#include <stdio.h> int main() { int tab1[100], tab2[100]; int i, n; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", &n); printf("Entrer les %d éléments dans le tableau: ", n); for (i = 0; i < n; i++) { printf("tab[%d]: ", i); // Lire l'entrée et la stocker dans le premier tableau scanf("%d", &tab1[i]); } // Copie les éléments du 1er tableau dans le 2éme tableau. for (i = 0; i < n; i++) { tab2[i] = tab1[i]; } printf("\nLes valeurs stockées dans le tableau sont: "); for (i = 0; i < n; i++) { printf("% 5d", tab1[i]); } printf("\nLes éléments copiés dans le 2ème tableau sont:"); for (i = 0; i < n; i++) { printf("% 5d", tab2[i]); } return 0; }
145. Écrire un programme en C pour compter le nombre total d'éléments dupliqués dans un tableau.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 4 Entrer les 4 éléments dans le tableau: tab[0]: 5 tab[1]: 1 tab[2]: 1 tab[3]: 1 Le nombre total d'éléments dupliqués trouvés dans le tableau est: 2
#include <stdio.h> int main() { int tab[100]; int n, compteur=0; int i, j; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", &n); printf("Entrer les %d éléments dans le tableau:\n", n); for (i = 0; i < n; i++) { printf("tab[%d]: ", i); // Lire l'entrée et la stocker dans le premier tableau scanf("%d", &tab[i]); } // Vérifier les doublons dans le tableau for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) { if (tab[i] == tab[j]) { //Incrémenter le compteur de doublons si un doublon est trouvé compteur++; //Sortir de la boucle dès qu'un doublon est trouvé break; } } } printf("Le nombre total d'éléments dupliqués trouvés dans le tableau est: %d", compteur); return 0; }
146. Écrire un programme en C pour afficher tous les éléments uniques d'un tableau.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 4 Entrer les 4 éléments dans le tableau: tab[0]: 5 tab[1]: 7 tab[2]: 7 tab[3]: 1 Les éléments uniques trouvés dans le tableau sont: 5 1
#include <stdio.h> int main() { int tab[100], n, compteur = 0; int i, j, k; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", &n); printf("Entrer les %d éléments dans le tableau:\n", n); for (i = 0; i < n; i++) { printf("tab[%d]: ", i); // Lire l'entrée et la stocker dans le premier tableau scanf("%d", &tab[i]); } printf("\nLes éléments uniques trouvés dans le tableau sont: "); for (i = 0; i < n; i++) { //Réinitialiser le compteur pour chaque élément compteur = 0; for (j = 0, k = n; j < k + 1; j++) { //Incrémenter le compteur lorsque la valeur recherchée est dupliquée if (i != j) { if (tab[i] == tab[j]) { compteur++; } } } if (compteur == 0) { printf("%d ", tab[i]); //Afficher l'élément unique } } return 0; }
147. Écrire un programme en C pour fusionner deux tableaux de même taille triés par ordre décroissant.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 3 Entrer les 3 éléments dans le tableau: tab[0]: 1 tab[1]: 2 tab[2]: 3 Entrer le nombre d'éléments à stocker dans le tableau: 3 Entrer les 3 éléments dans le tableau: tab[0]: 1 tab[1]: 2 tab[2]: 3 Le tableau fusionné par ordre décroissant est: 3 3 2 2 1 1
#include <stdio.h> int main() { int tab1[100], tab2[100], tab3[200]; int i, j, k; int n1, n2, n3; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", & n1); printf("Entrer les %d éléments dans le tableau:\n", n1); for (i = 0; i < n1; i++) { printf("tab[%d]: ", i); scanf("%d", & tab1[i]); } printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", & n2); printf("Entrer les %d éléments dans le tableau:\n", n2); for (i = 0; i < n2; i++) { printf("tab[%d]: ", i); scanf("%d", & tab2[i]); } /* Taille du tableau fusionné est égale à la taille du 1er tableau + taille du 2éme tableau */ n3 = n1 + n2; //insertion dans le troisième tableau for (i = 0; i < n1; i++) { tab3[i] = tab1[i]; } for (j = 0; j < n2; j++) { tab3[i] = tab2[j]; i++; } // trier le tableau par ordre décroissant for (i = 0; i < n3; i++) { for (k = 0; k < n3 - 1; k++) { if (tab3[k] <= tab3[k + 1]) { j = tab3[k + 1]; tab3[k + 1] = tab3[k]; tab3[k] = j; } } } // Affiche le tableau fusionné printf("\nLe tableau fusionné par ordre décroissant est: "); for (i = 0; i < n3; i++) { printf("%d ", tab3[i]); } printf("\n\n"); return 0; }
148. Écrire un programme en C pour compter la fréquence de chaque élément dans le tableau.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 3 Entrer les 3 éléments dans le tableau: tab[0]: 8 tab[1]: 8 tab[2]: 9 La fréquence de tous les éléments du tableau: 8 se produit 2 fois 9 se produit 1 fois
#include <stdio.h> int main() { int tab[100], freq[100]; int n, i, j, compteur; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", &n); printf("Entrer les %d éléments dans le tableau:\n", n); for (i = 0; i < n; i++) { printf("tab[%d]: ", i); scanf("%d", &tab[i]); //Initialiser le tableau des fréquences avec -1 freq[i] = -1; } // Compter la fréquence de chaque élément du tableau for (i = 0; i < n; i++) { //Initialiser le compteur pour chaque élément compteur = 1; for (j = i + 1; j < n; j++) { if (tab[i] == tab[j]) { //Incrémenter le compteur pour les éléments correspondants compteur++; //Marquer la fréquence de l'élément dupliqué comme 0 freq[j] = 0; } } /* Si la valeur du tableau de fréquences n'est pas marquée comme 0, mettez-la sur le compteur */ if (freq[i] != 0) { freq[i] = compteur; } } printf("\nLa fréquence de tous les éléments du tableau: \n"); for (i = 0; i < n; i++) { if (freq[i] != 0) { printf("%d se produit %d fois\n", tab[i], freq[i]); } return 0; } }
149. Écrire un programme en C pour trouver le maximum et le minimum dans le tableau.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 3 Entrer les 3 éléments dans le tableau: tab[0]: 10 tab[1]: 9 tab[2]: 2 Le maximum est: 10 Le minimum est: 2
#include <stdio.h> int main() { int tab[100]; int i, max, min, n; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", &n); printf("Entrer les %d éléments dans le tableau:\n", n); for (i = 0; i < n; i++) { printf("tab[%d]: ", i); scanf("%d", &tab[i]); } //Initialiser max et min avec le premier élément du tableau max = tab[0]; min = tab[0]; // Parcourir le tableau pour trouver le maximum et minimum for (i = 1; i < n; i++) { // Actualiser max si l'élément actuel est plus grand if (tab[i] > max) { max = tab[i]; } // Actualiser min si l'élément actuel est plus petit if (tab[i] < min) { min = tab[i]; } } printf("Le maximum est: %d\n", max); printf("Le minimum est: %d", min); return 0; }
150. Écrire un programme en C pour séparer les nombres entiers pairs et impairs dans des tableaux séparés.
Exemple de sortie:
Entrer le nombre d'éléments à stocker dans le tableau: 4 Entrer les 4 éléments dans le tableau: tab[0]: 1 tab[1]: 2 tab[2]: 3 tab[3]: 4 Les éléments pairs sont: 2 4 Les éléments impairs sont: 1 3
#include <stdio.h> int main() { int tab1[10], tab2[10], tab3[10]; int i, j = 0, k = 0, n; printf("Entrer le nombre d'éléments à stocker dans le tableau:"); scanf("%d", &n); printf("Entrer les %d éléments dans le tableau:\n", n); for (i = 0; i < n; i++) { printf("tab[%d]: ", i); scanf("%d", &tab1[i]); } // Séparer les entiers pairs et impairs dans des tableaux séparés for (i = 0; i < n; i++) { if (tab1[i] % 2 == 0) { tab2[j] = tab1[i]; j++; } else { tab3[k] = tab1[i]; k++; } } printf("\nLes éléments pairs sont: "); for (i = 0; i < j; i++) { printf("%d ", tab2[i]); } printf("\nLes éléments impairs sont: "); for (i = 0; i < k; i++) { printf("%d ", tab3[i]); } return 0; }