Exercices Corrigés En C – Les chaînes de caractères
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 saisir une chaîne de caractères et l’afficher.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! La chaîne saisie est: Hello, World!
#include <stdio.h> #include <stdlib.h> int main() { /* Déclaration un tableau de caractères pour stocker la chaîne de caractères */ char str[50]; printf("Entrer une chaîne de caractères: "); /* Lire une chaîne de caractères à partir du clavier en utilisant fgets() */ fgets(str, sizeof str, stdin); // Afficher la chaîne de caractères saisie par l'utilisateur printf("La chaîne saisie est: %s\n", str); /* Renvoyer 0 pour indiquer que le programme a été exécuté avec succès */ return 0; }
2. Écrire un programme en C pour trouver la longueur d’une chaîne de caractères sans utiliser les fonctions de bibliothèque.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! La longueur de la chaîne est: 13
#include <stdio.h> #include <stdlib.h> int main() { // Déclare une chaîne de caractères de taille 100 char str[100]; /* Initialiser une variable pour stocker la longueur de la chaîne de caractères. */ int len = 0; printf("Entrer une chaîne de caractères: "); /* Lire une chaîne de caractères à partir du clavier en utilisant fgets() */ fgets(str, sizeof str, stdin); // Boucle pour calculer la longueur de la chaîne while (str[len] != '\0') { /* Incrémenter le compteur len jusqu'à ce que le terminateur nul "\0" soit rencontré. */ len++; } printf("La longueur de la chaîne est: %d", len - 1); /* Renvoyer 0 pour indiquer que le programme a été exécuté avec succès */ return 0; }
3. Écrire un programme en C pour séparer chaque caractère d’une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! Les caractères de la chaîne sont: H e l l o , W o r l d !
#include <stdio.h> #include <stdlib.h> int main() { /* Déclare une chaîne de caractères de taille 100 */ char str[100]; /* Initialiser une variable pour stocker l'index de la chaîne de caractères. */ int i = 0; printf("Entrer une chaîne de caractères: "); /* Lire une chaîne de caractères à partir du clavier en utilisant fgets() */ fgets(str, sizeof str, stdin); printf("Les caractères de la chaîne sont: \n"); /* Boucle pour afficher chaque caractère de la chaîne de caractères jusqu'à ce que le terminateur nul '\0' soit rencontré. */ while (str[i] != '\0') { printf("%c ", str[i]); // Afficher chaque caractère i++; // Passer au caractère suivant de la chaîne } printf("\n"); /* Renvoyer 0 pour indiquer que le programme a été exécuté avec succès */ return 0; }
4. Écrire un programme en C pour afficher chaque caractère d’une chaîne de caractères dans l’ordre inverse.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! Les caractères de la chaîne en sens inverse sont: ! d l r o W , o l l e H
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { /* Déclare une chaîne de caractères de taille 100 */ char str[100]; int len, i; printf("Entrer une chaîne de caractères:"); /* Lire une chaîne de caractères à partir du clavier en utilisant fgets() */ fgets(str, sizeof str, stdin); len = strlen(str); // Calculer la longueur de la chaîne printf("Les caractères de la chaîne en sens inverse sont: \n"); // Boucle pour afficher chaque caractère dans l'ordre inverse for (i = len - 1; i >= 0; i--) { // Afficher chaque caractère dans l'ordre inverse printf("%c ", str[i]); } printf("\n"); return 0; }
5. Écrire un programme en C pour compter le nombre total de mots dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello World Le nombre total de mots dans la chaîne est: 2
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { /* Déclare une chaîne de caractères de taille 100 */ char str[100]; int i, nbr; printf("Entrer une chaîne de caractères:"); /* Lire une chaîne de caractères à partir du clavier en utilisant fgets() */ fgets(str, sizeof str, stdin); i = 0; // Initialiser l'itérateur /* Initialiser le nombre de mots à 1 (en supposant qu'il existe au moins un mot dans la chaîne) */ nbr = 1; /* Boucle pour compter les mots dans la chaîne */ while (str[i] != '\0') { // Boucle jusqu'à la fin de la chaîne /* Vérifier si le caractère courant est un espace, une nouvelle ligne ou un caractère de tabulation. */ if (str[i] == ' ' || str[i] == '\n' || str[i] == '\t') { /* Incrémenter le nombre de mots lorsqu'un espace, une nouvelle ligne ou une tabulation est trouvé. */ nbr++; } i++; // Passer au caractère suivant de la chaîne } printf("Le nombre total de mots dans la chaîne est: %d", nbr - 1); return 0; }
6. Écrire un programme en C pour comparer deux chaînes de caractères sans utiliser les fonctions de la bibliothèque.
Exemple de sortie:
Saisir la 1ère chaîne: alex Saisir la 2ème chaîne: alex Les chaînes sont égales.
#include <stdio.h> // Fonction pour comparer deux chaînes de caractères int comparer(char* s1, char* s2) { int flag = 0; /* Boucle pour comparer les caractères des chaînes jusqu'à ce que le terminateur nul "\0" soit trouvé dans les deux chaînes. */ while (*s1 != '\0' || *s2 != '\0') { // Vérifier si les caractères des deux chaînes sont égaux if (*s1 == *s2) { s1++; // Passer au caractère suivant de la première chaîne s2++; // Passer au caractère suivant de la deuxième chaîne } else if ((*s1 == '\0' && *s2 != '\0') || (*s1 != '\0' && *s2 == '\0') || *s1 != *s2) { // Vérifier les cas où une chaîne se termine avant l'autre ou les cas où les caractères au même index ne sont pas égaux. flag = 1; // Mettre le drapeau pour indiquer l'inégalité break; // Sortir de la boucle si une inégalité est trouvée } } // Retourne le drapeau indiquant l'égalité(0) ou l'inégalité(1) return flag; } int main(void) { char str1[100], str2[100]; int drapeau = 0; printf("\nSaisir la 1ère chaîne: "); fgets(str1, sizeof str1, stdin); printf("Saisir la 2ème chaîne: "); fgets(str2, sizeof str2, stdin); drapeau = comparer(str1, str2); // comparer les chaînes // Afficher le résultat de la comparaison en fonction du drapeau if (drapeau == 0) { printf("\nLes chaînes sont égales.\n"); } else if (drapeau == 1) { printf("\nLes chaînes ne sont pas égales."); } return 0; }
7. Écrire un programme en C pour compter le nombre total d’alphabets, de chiffres et de caractères spéciaux dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: 123 Hello, World! Nombre d'alphabets dans la chaîne est: 10 Nombre de chiffres dans la chaîne: 3 Nombre de caractères spéciaux dans la chaîne: 2
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str[100]; /* Déclarer des variables pour les alphabets, les chiffres, les caractères spéciaux et l'itération */ int alph, chiffre, spec, i; alph = chiffre = spec = i = 0; // Initialiser les compteurs à zéro printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); /* Vérifie chaque caractère de la chaîne */ while (str[i] != '\0') { if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) { alph++; // Incrémente si le caractère est un alphabet } else if (str[i] >= '0' && str[i] <= '9') { chiffre++; // Incrémente si le caractère est un chiffre } else { spec++; // Incrémente si le caractère est un caractères spéciaux } i++; // Passer au caractère suivant de la chaîne de caractères } printf("Nombre d'alphabets dans la chaîne est: %d\n", alph); printf("Nombre de chiffres dans la chaîne: %d\n", chiffre); printf("Nombre de caractères spéciaux dans la chaîne: %d", spec); return 0; }
8. Écrire un programme en C pour copier une chaîne de caractères dans une autre chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello, World! Chaîne originale: Hello, World! Chaîne copiée: Hello, World! Nombre de caractères copiés est: 13
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str1[100], str2[100]; int i; printf("Entrer une chaîne de caractères: "); fgets(str1, sizeof str1, stdin); /* Copie la chaîne de caractères str1 dans str2, caractère par caractère */ i = 0; // Boucle jusqu'à la fin de la première chaîne while (str1[i] != '\0') { str2[i] = str1[i]; // Copier chaque caractère de str1 dans str2 i++; // Passer au caractère suivant de la chaîne } // S'assurer que la deuxième chaîne est terminée par NULL str2[i] = '\0'; // Ajouter le terminateur NULL à la fin de str2 printf("\nChaîne originale: %s\n", str1); printf("Chaîne copiée: %s\n", str2); printf("Nombre de caractères copiés est: %d", i); return 0; }
9. Ecrivez un programme en C pour compter le nombre total de voyelles ou de consonnes dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello World Le nombre total de voyelles dans la chaîne est: 3 Le nombre total de consonnes dans la chaîne est: 7
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char str[100]; int len, voy, cons, i; printf("Entrer une chaîne de caractères:"); fgets(str, sizeof str, stdin); voy = 0; cons = 0; len = strlen(str); // Boucle pour vérifier chaque caractère de la chaîne for (i = 0; i < len; i++) { /* Vérifier si le caractère est une voyelle(en minuscules et en majuscules) */ if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' || str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U') { /* Incrémenter le nombre de voyelles si le caractère est une voyelle */ voy++; } /* Vérifier si le caractère est un alphabet (minuscules et majuscules) */ else if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) { /* Incrémenter le nombre de consonnes si le caractère est un alphabet mais pas une voyelle */ cons++; } } printf("\nLe nombre total de voyelles dans la chaîne est: %d\n", voy); printf("Le nombre total de consonnes dans la chaîne est: %d", cons); return 0; }
10. Écrire un programme en C pour trouver le nombre maximum de caractères dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hello World Le caractère qui a une fréquence plus élevée est 'l' Nombre de répétitions: 3
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { //Déclare un tableau de caractères pour stocker la chaîne de caractères char str[100]; //Déclarer un tableau pour stocker la fréquence des caractères int freq_chr[255]; //Déclarer les variables pour l'itération et la recherche de la fréquence maximale int i = 0, max; //Variable contenant la valeur ASCII d'un caractère int ascii; printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); for (i = 0; i < 255; i++) { //Initialiser la fréquence de tous les caractères à zéro freq_chr[i] = 0; } /* Lire la fréquence de chaque caractère */ i = 0; // Boucle jusqu'à la fin de la chaîne while (str[i] != '\0') { // Récupérer la valeur ASCII du caractère courant ascii = (int)str[i]; // Incrémente le nombre de fréquences pour ce caractère freq_chr[ascii] += 1; i++; } max = 0; for (i = 0; i < 255; i++) { if (i != 32) { // Exclure le caractère espace (' ') if (freq_chr[i] > freq_chr[max]) { max = i; // Actualiser max avec la fréquence maximale } } } printf("Le caractère qui a une fréquence plus élevée est '%c'\n", max); printf("Nombre de répétitions: %d", freq_chr[max]); return 0; }
11. Écrire un programme C pour trier un tableau de chaînes de caractères dans l'ordre croissant.
Exemple de sortie:
Entrer une chaîne de caractères: waytolearnx Après le tri: aaelnortwxy
#include <stdio.h> #include <string.h> int main() { //Déclarer un tableau de caractères et une variable temporaire 'ch' char str[100], ch; //Déclarer des variables pour l'itération et longueur de la chaîne int i, j, len; printf("Entrer une chaîne de caractères:"); fgets(str, sizeof str, stdin); len = strlen(str); //Calculer la longueur de la chaîne /* Tri à l'aide de l'algorithme de tri à bulles */ for (i = 1; i < len; i++) { for (j = 0; j < len - i; j++) { /* Vérifier si le caractère courant est plus grand que le suivant */ if (str[j] > str[j + 1]) { // Échanger les caractères s'ils sont en désordre ch = str[j]; str[j] = str[j + 1]; str[j + 1] = ch; } } } printf("Après le tri: %s", str); return 0; }
12. Écrire un programme en C pour lire un certain nombre de chaîne de caractères à partir du clavier et les trier à l'aide du tri à bulles.
Exemple de sortie:
Entrer le nombre de chaînes : 3 Entrez les 3 chaînes de caractères: bob alex emily Les chaînes de caractères après le tri: alex bob emily
#include <stdio.h> #include <string.h> int main() { char nom[25][50], tmp[25]; int n, i, j; printf("Entrer le nombre de chaînes : "); scanf("%d", &n); printf("Entrez les %d chaînes de caractères: \n", n); for (i = 0; i <= n; i++) { fgets(nom[i], sizeof(nom[i]), stdin); } /* Tri à bulles */ for (i = 1; i <= n; i++) { for (j = 0; j <= n - i; j++) { // Comparer les chaînes de caractères adjacentes if (strcmp(nom[j], nom[j + 1]) > 0) { // Échanger les chaînes de caractères strcpy(tmp, nom[j]); strcpy(nom[j], nom[j + 1]); strcpy(nom[j + 1], tmp); } } } printf("Les chaînes de caractères après le tri: \n"); for (i = 0; i <= n; i++) { printf("%s\n", nom[i]); } return 0; }
13. Ecrire un programme en C pour extraire une sous-chaîne d'une chaîne donnée.
Exemple de sortie:
Entrer la chaîne: welcome to waytolearnx Entrer la position de départ de l'extraction: 8 Entrer la longueur de la sous-chaîne: 3 La sous-chaîne extraite de la chaîne est: " to"
#include <stdio.h> int main() { char str[100], soustr[100]; //Variables pour la position, la longueur et un compteur int pos, l, c = 0; printf("Entrer la chaîne: "); fgets(str, sizeof str, stdin); printf("Entrer la position de départ de l'extraction:"); scanf("%d", &pos); printf("Entrer la longueur de la sous-chaîne:"); scanf("%d", &l); // Extraire la sous-chaîne while (c < l) { /* Copie les caractères à partir de la position spécifiée dans la sous-chaîne */ soustr[c] = str[pos + c - 1]; c++; } //Ajouter le terminateur null pour marquer la fin de la sous-chaîne soustr[c] = '\0'; printf("La sous-chaîne extraite de la chaîne est: \" %s\"", soustr); return 0; }
14. Écrire un programme C pour vérifier si une sous-chaîne est présente dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Saisir la sous-chaîne à rechercher: to La sous-chaîne existe dans la chaîne.
#include <stdio.h> int main() { char str[80], soustr[10]; int count1 = 0, count2 = 0, i, j, drapeau; printf("Entrer une chaîne de caractères:"); gets(str); printf("Saisir la sous-chaîne à rechercher:"); gets(soustr); // Calculer la longueur de la chaîne principale while (str[count1] != '\0') count1++; // Calculer la longueur de la sous-chaîne while (soustr[count2] != '\0') count2++; // Vérifier si la sous-chaîne existe dans la chaîne principale for (i = 0; i <= count1 - count2; i++) { for (j = i; j < i + count2; j++) { /* Initialiser le drapeau pour la correspondance de la sous-chaîne */ drapeau = 1; if (str[j] != soustr[j - i]) { /* Mettre le drapeau à zéro si les caractères ne correspondent pas */ drapeau = 0; break; } } // Quitter la boucle si la sous-chaîne est trouvée if (drapeau == 1) break; } if (drapeau == 1) printf("La sous-chaîne existe dans la chaîne."); else printf("La sous-chaîne n'existe pas dans la chaîne."); return 0; }
15. Écrire un programme en C pour lire une phrase et remplacer les caractères minuscules par des majuscules et vice versa.
Exemple de sortie:
Entrer une chaîne de caractères: Welcome To Waytolearnx Après le changement de Case, la chaîne de caractères est: wELCOME tO wAYTOLEARNX
#include <stdio.h> #include <string.h> #include <ctype.h> int main() { char str[100]; int len, ch, i; printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); i = strlen(str); len = i; /* indique le nombre de caractères dans une phrase */ printf("Après le changement de Case, la chaîne de caractères est: "); for (i = 0; i < len; i++) { /* Vérifier si le caractère est une minuscule, puis le convertir en majuscule, sinon le convertir en minuscule. */ ch = islower(str[i]) ? toupper(str[i]) : tolower(str[i]); putchar(ch); // Affiche le caractère modifié } return 0; }
16. Ecrivez un programme en C pour trouver le nombre de fois le mot "on" apparaît dans la chaîne donnée.
Exemple de sortie:
Entrer une chaîne de caractères: on peut dire on a raison qu'on va arrêter. La fréquence du mot "on" est: 3
#include <stdio.h> #include <string.h> int main() { int len = 0, i, freq = 0, o, n, espace; char str[100]; printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); len = strlen(str); // Calculer la longueur de la chaîne /* Compte la fréquence du mot "on" avec un espace à la fin du mot */ for (i = 0; i <= len - 3; i++) { /* Vérifier si les caractères forment le motif "on" (sans tenir compte de la casse) */ o = (str[i] == 'o' || str[i] == 'O'); n = (str[i + 1] == 'n' || str[i + 1] == 'N'); espace = (str[i + 3] == ' ' || str[i + 3] == '\0'); // Incrémenter la fréquence si "on" est trouvé if ((o && n && espace) == 1) freq++; } printf("La fréquence du mot 'on' est: %d", freq); return 0; }
17. Écrire un programme en C pour supprimer tous les caractères, sauf les alphabets.
Exemple de sortie:
Entrer une chaîne de caractères: w@ytolearnx1992 Après avoir supprimé les caractères: wytolearnx
#include <stdio.h> #include <string.h> int main() { char str[150]; int i, j; printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); for (i = 0; str[i] != '\0'; ++i) { while (!((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z' || str[i] == '\0'))){ /* Boucle pour supprimer les caractères non alphabétiques de la chaîne de caractères */ for (j = i; str[j] != '\0'; ++j) { /* Décaler les caractères vers la gauche pour supprimer les caractères non alphabétiques */ str[j] = str[j + 1]; } // Fixer la fin de la chaîne après la suppression str[j] = '\0'; } } printf("Après avoir supprimé les caractères: %s", str); return 0; }
18. Ecrivez un programme en C pour trouver la fréquence des caractères.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Saisir le caractère pour trouver la fréquence: o La fréquence de 'o' est: 3
#include <stdio.h> int main() { char str[500], chr; int i, compteur = 0; printf("Entrer une chaîne de caractères:"); fgets(str, sizeof str, stdin); printf("Saisir le caractère pour trouver la fréquence:"); scanf("%c", &chr); for (i = 0; str[i] != '\0'; ++i) { /* Vérifier si le caractère correspond au caractère actuel de la chaîne de caractères */ if (chr == str[i]) { //Incrémente le compteur si le caractère correspond ++compteur; } } printf("La fréquence de '%c' est: %d", chr, compteur); return 0; }
19. Écrire un programme en C pour concaténer deux chaînes de caractères.
Exemple de sortie:
Entrer la première chaîne: Hello Entrer la deuxième chaîne: World! Après concaténation, la chaîne est: Hello World!
#include <stdio.h> #include <string.h> int main() { char str1[100], str2[100], i, j, len1, len2, len3; printf("Entrer la première chaîne: "); fgets(str1, sizeof str1, stdin); printf("Entrer la deuxième chaîne: "); fgets(str2, sizeof str2, stdin); len1 = strlen(str1); // Récupère la longueur de str1 len2 = strlen(str2); // Récupère la longueur de str2 for (i = 0; i < len1 - 1; ++i); str1[i] = ' '; /* Ajouter un espace à la chaîne str1. */ i++; /* Incrémenter i de 1 pour l'espace vide */ for (j = 0; j < len2 - 1; ++j, ++i) { // Concaténer str2 à str1 après l'espace ajouté str1[i] = str2[j]; } len3 = strlen(str1); //Récupère la longueur de la chaîne concaténée printf("Après concaténation, la chaîne est: "); for (i = 0; i < len3; ++i) { // Afficher la chaîne concaténée printf("%c", str1[i]); } return 0; }
20. Écrire un programme en C pour trouver les mots les plus grands et les plus petits dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Voici une description simple Le mot le plus grand est 'description' et le mot le plus petit est 'une'.
#include <stdio.h> #include <string.h> #include <ctype.h> int main() { char str[100], mot[20], max[20], min[20], c; int i = 0, j = 0, drapeu = 0; printf("Entrer une chaîne de caractères:"); i = 0; /* Lire caractère par caractère jusqu'à la nouvelle ligne ou la fin du tableau */ while ((c = getchar()) != '\n' && i < sizeof(str) - 1) { // Vérifier la présence de caractères alphanumériques et d'espaces if (isalnum(c) || isspace(c)) { // Stocker les caractères dans le tableau str str[i++] = c; } } str[i] = '\0'; // Terminer la chaîne par le caractère nul /* Parcourir la chaîne pour trouver les mots les plus grands et les plus petits */ for (i = 0; i < strlen(str); i++) { // Vérifier la présence de caractères alphanumériques while (i < strlen(str) && !isspace(str[i]) && isalnum(str[i])) { /* Stocker les caractères dans le tableau mot jusqu'à ce qu'un espace ou un caractère non alphanumérique soit trouvé. */ mot[j++] = str[i++]; } if (j != 0) { // Vérifier s'il y a un mot mot[j] = '\0'; // Terminer le mot par le caractère nul // Vérifier si c'est le premier mot rencontré if (!drapeu) { // Mettre un drapeau pour indiquer le premier mot drapeu = !drapeu; // Copier le premier mot dans max et min strcpy(max, mot); strcpy(min, mot); } // Comparez les longueurs de mot pour trouver le maximum if (strlen(mot) > strlen(max)) { // Actualiser le max si le mot actuel est plus long strcpy(max, mot); } // Comparez les longueurs de mot pour trouver minimum if (strlen(mot) < strlen(min)) { // Actualiser min si le mot actuel est plus court strcpy(min, mot); } // Remettre à zéro l'index du tableau mot pour le mot suivant j = 0; } } printf("Le mot le plus grand est '%s' et le mot le plus petit est '%s'.", max, min); return 0; }
21. Écrire un programme en C pour convertir une chaîne de caractères en majuscules.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx WELCOME TO WAYTOLEARNX
#include <stdio.h> #include <ctype.h> int main() { int i=0; //Variable pour suivre la position dans la chaîne char chr; // Variable pour stocker chaque caractère de la chaîne char str[100]; // Tableau pour stocker la chaîne saisie printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); // Parcourir la chaîne jusqu'à ce que le caractère null soit rencontré while (str[i]) { chr = str[i]; // Récupérer chaque caractère de la chaîne /* Convertir le caractère en majuscule avec toupper() et l'afficher */ putchar(toupper(chr)); i++; // Passer au caractère suivant de la chaîne } return 0; }
22. Écrire un programme en C pour convertir une chaîne de caractères en minuscules.
Exemple de sortie:
Entrer une chaîne de caractères: WELCOME TO WAYTOLEARNX welcome to waytolearnx
#include <stdio.h> #include <ctype.h> int main() { int i=0; //Variable pour suivre la position dans la chaîne char chr; // Variable pour stocker chaque caractère de la chaîne char str[100]; // Tableau pour stocker la chaîne saisie printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); // Parcourir la chaîne jusqu'à ce que le caractère null soit rencontré while (str[i]) { chr = str[i]; // Récupérer chaque caractère de la chaîne /* Convertir le caractère en minuscules avec tolower() et l'afficher */ putchar(tolower(chr)); i++; // Passer au caractère suivant de la chaîne } return 0; }
23. Écrire un programme en C pour vérifier si un caractère est un chiffre hexadécimal ou non.
Exemple de sortie:
Entrer un caractère: A Le caractère saisi est un chiffre hexadécimal.
#include <stdio.h> #include <ctype.h> int main() { char chr; //Variable pour stocker le caractère saisi printf("Entrer un caractère: "); scanf("%c", &chr); // Vérifier si le caractère saisi est un chiffre hexadécimal if (isxdigit(chr)) { printf("Le caractère saisi est un chiffre hexadécimal."); } else { printf("Le caractère saisi n'est pas un chiffre hexadécimal."); } return 0; }
24. Ecrivez un programme en C pour vérifier si une lettre est majuscule ou non.
Exemple de sortie:
Entrer un caractère: a La lettre saisie n'est pas une lettre MAJUSCULE.
#include <stdio.h> #include <ctype.h> int main() { char chr; printf("Entrer un caractère: "); scanf("%c", &chr); // Vérifier si le caractère saisi est une lettre majuscule if (isupper(chr)) { printf("La lettre saisie est une lettre MAJUSCULE."); } else { printf("La lettre saisie n'est pas une lettre MAJUSCULE."); } return 0; }
25. Écrire un programme en C pour remplacer les espaces d'une chaîne de caractères par un caractère donné.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Entrer le caractère de remplacement: _ Après le remplacement: welcome_to_waytolearnx
#include <stdio.h> #include <ctype.h> int main() { int i_char; char chr; int i = 0; char str[100]; printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); printf("Entrer le caractère de remplacement: "); scanf("%c", &chr); printf("Après le remplacement: ", chr); while (str[i]) { i_char = str[i]; // Récupérer chaque caractère de la chaîne /* Vérifier si le caractère est un espace et le remplacer par le caractère spécifié */ if (isspace(i_char)) { i_char = chr; } putchar(i_char); // Afficher le caractère i++; // Passer au caractère suivant de la chaîne } return 0; }
26. Écrire un programme en C pour compter le nombre de caractères de ponctuation présents dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: Hi, welcome, to waytolearnx. Le nombre de caractères de ponctuation présents dans la chaîne est: 3
#include <stdio.h> #include <ctype.h> int main() { int i = 0; // Compteur pour itérer à travers la chaîne int p = 0; // Compteur de caractères de ponctuation char str[100]; // Tableau pour stocker la chaîne saisie printf("Entrer une chaîne de caractères: "); fgets(str, sizeof str, stdin); // Parcourir la chaîne et compter les caractères de ponctuation while (str[i]) { if (ispunct(str[i])) { //Incrémente le compteur si le caractère est une ponctuation p++; } i++; // Passer au caractère suivant de la chaîne } printf("Le nombre de caractères de ponctuation présents dans la chaîne est: %d", p); return 0; }
27. Ecrivez un programme en C pour n'afficher que la chaîne de caractères précédant le caractère de retour à la ligne.
Exemple de sortie:
"Hi\n welcome\n to waytolearnx.\n" => Hi
#include <stdio.h> #include <ctype.h> int main() { int i = 0; char str[] = "Hi\n welcome\n to waytolearnx.\n"; /* Parcourt la chaîne et affiche les caractères jusqu'à ce qu'un caractère de retour à la ligne ou la fin du chaîne soit rencontrée*/ while (isprint(str[i])) { putchar(str[i]); // Afficher le caractère i++; // Passer au caractère suivant de la chaîne if (str[i] == '\n') { break; // Quitter la boucle si le caractère \n est rencontré } } return 0; }
28. Ecrivez un programme en C pour vérifier si une lettre est minuscule ou non.
Exemple de sortie:
Entrer un caractère: A La lettre saisie n'est pas une lettre minuscule.
#include <stdio.h> #include <ctype.h> int main() { char chr; printf("Entrer un caractère: "); scanf("%c", &chr); // Vérifier si le caractère saisi est une lettre minuscule if (islower(chr)) { printf("La lettre saisie est une lettre minuscule."); } else { printf("La lettre saisie n'est pas une lettre minuscule."); } return 0; }
29. Écrire un programme en C pour vérifier si un caractère est un chiffre ou non.
Exemple de sortie:
Entrer un caractère: 5 Le caractère saisi est un chiffre.
#include <stdio.h> #include <ctype.h> int main() { char chr; printf("Entrer un caractère: "); scanf("%c", &chr); // Vérifier si le caractère saisi est un chiffre if (isdigit(chr)) { printf("Le caractère saisi est un chiffre."); } else { printf("Le caractère saisi n'est pas un chiffre."); } return 0; }
30. Écrire un programme en C pour découper les chaînes de caractères en mots en fonction de l'espace.
Exemple de sortie:
Entrer une chaîne de caractères: welcome to waytolearnx Les mots après avoir été séparé par un espace est: welcome to waytolearnx
#include <stdio.h> #include <ctype.h> int main() { char str1[100]; // Tableau 2D pour stocker les chaînes de caractères découpées char tab[10][10]; int i, j, k; printf("Entrer une chaîne de caractères: "); fgets(str1, sizeof str1, stdin); j = 0; // Initialiser l'index des colonnes du tab k = 0; // Initialiser le nombre de mots // Parcourir chaque caractère de la chaîne saisie for (i = 0; i <= (strlen(str1)); i++) { // Si un espace ou NULL est trouvé, assigner NULL dans tab[k] if (str1[i] == ' ' || str1[i] == '\0') { tab[k][j] = '\0'; // Terminer le mot par un nul k++; // Passer au mot suivant j = 0; // Remettre l'index de la colonne à 0 pour le mot suivant } else { tab[k][j] = str1[i]; // Stocker le caractère dans tab j++; // Passer au caractère suivant du mot } } printf("Les mots après avoir été séparé par un espace est:\n"); for (i = 0; i < k; i++) { printf(" %s\n", tab[i]); } return 0; }
31. Écrire un programme C pour trouver le caractère répété dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: raroriri Le caractère répétitif est: r i
#include <stdio.h> #include <string.h> int main() { char str[100]; int count; printf("Entrer une chaîne de caractères: "); scanf("%[^\n]*c",str); printf("Le caractère répétitif est: \n"); //Compter chaque caractère présent dans la chaîne for(int i = 0; i < strlen(str); i++) { //Réactualise le compteur à 1 pour chaque nouveau caractère count = 1; for(int j = i+1; j < strlen(str); j++) { if(str[i] == str[j] && str[i] != ' ') { count++; //Mettre str[j] à 0 pour éviter d'afficher le caractère visité str[j] = '0'; } } //Un caractère est considéré comme dupliqué si le nombre est supérieur à 1 if(count > 1 && str[i] != '0') printf("%c\n", str[i]); } return 0; }
32. Écrire un programme C pour compter chaque caractère d'une chaîne donnée.
Exemple de sortie:
Entrer une chaîne de caractères: raroriri La fréquence de a est 1 La fréquence de i est 2 La fréquence de o est 1 La fréquence de r est 4
#include <stdio.h> int main() { char str[100] = "raroriri"; int i; int freq[256] = {0}; //Calculer la fréquence de chaque caractère. for(i = 0; str[i] != '\0'; i++) { freq[str[i]]++; } //Afficher la fréquence de chaque caractère. for(i = 0; i < 256; i++) { if(freq[i] != 0) { printf("La fréquence de %c est %d\n", i, freq[i]); } } return 0; }
33. Écrire un programme C pour convertir les voyelles en majuscules dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: waytolearnx Après la conversion: wAytOlEArnx
#include <stdio.h> int main() { char str[255]; int i; printf("Entrer une chaîne de caractères: "); gets(str); i = 0; /* Parcourir la chaîne jusqu'à ce que la fin de la chaîne ('\0') soit atteinte */ while (str[i] != '\0') { /* Convertir les voyelles minuscules en majuscules en soustrayant 32 à leur valeur ASCII. */ if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u') { str[i] = str[i] - 32; } i++; // Passer au caractère suivant de la chaîne } printf("Après la conversion: "); puts(str); return 0; }
34. Écrire un programme C pour convertir les voyelles en majuscules dans une chaîne de caractères.
Exemple de sortie:
Entrer une chaîne de caractères: WAYTOLEARNX Après la conversion: WaYToLeaRNX
#include <stdio.h> int main() { char str[255]; int i; printf("Entrer une chaîne de caractères: "); gets(str); i = 0; /* Parcourir la chaîne jusqu'à ce que la fin de la chaîne ('\0') soit atteinte */ while (str[i] != '\0') { /* Convertir les voyelles majuscules en minuscules en ajoutant 32 à leur valeur ASCII.*/ if (str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U') { str[i] = str[i] + 32; } i++; // Passer au caractère suivant de la chaîne } printf("Après la conversion: "); puts(str); return 0; }
35. Ecrivez un programme C pour remplacer chaque lettre minuscule en lettre majuscule.
Exemple de sortie:
Entrer une chaîne de caractères: WayToLearnX Après la conversion: WAYTOLEARNX
#include <stdio.h> #include <string.h> #include <stdlib.h> // Fonction pour remplacer les lettres minuscules par majuscules char * convert(char * text) { char *tt = text; // Parcourir la chaîne while(*tt != '\0') { /* Si le caractère courant est une lettre minuscule, il est converti en majuscule */ if (*tt >= 'a' && *tt <= 'z') { *tt = *tt + 'A' - 'a'; // Conversion en majuscules } tt++; } return text; } int main() { char text[50] = "WayToLearnX"; printf("Après la conversion: %s", convert(text)); return 0; }
36. É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; }